【问题标题】:Print hex or decimal values of byte array in JavaScript在 JavaScript 中打印字节数组的十六进制或十进制值
【发布时间】:2013-09-28 01:34:47
【问题描述】:

我在 JavaScript 中有一个函数,它期望一个字节数组从本机 C++ 代码传递给它。例如:

function OnEvent(event, data1)
{
     console.log("data1[0] = " + data1[0]);
}

我希望它打印 0x55 甚至是它的十进制值。出于某种原因,我在控制台日志中看到以下内容:

如何在不打印字符的情况下打印字节的十六进制值甚至十进制值?


更新

感谢 Vinothbabu,我访问了下面的链接。我使用了解包功能:

function unpack(str) { 
    var bytes = []; 
    $("#homePage").append("str.length = " + str.length + "<br>"); 

    for(var i = 0, n = str.length; i < n; i++) { 
        var char = str.charCodeAt(i); 
        $("#homePage").append("char is equal to " + char + "<br>"); 
        bytes.push(char >>> 8, char & 0xFF); 
    }

    return bytes; 
}

它打印“char is equal to 65533”,而“bytes”的值打印出“255, 253”,这意味着它的值为0xFFFD。

这不是我期望的数据/有效负载。你知道为什么有 2 个字节吗?

【问题讨论】:

  • 试试data1[0].toString(16)
  • 感谢 Vinothbabu。我关注了您与打包/拆包相关的链接。但是,使用 unpack():code function unpack(str) { var bytes = []; $("#homePage").append("str.length = " + str.length + "
    "); for(var i = 0, n = str.length; i "); bytes.push(char >>> 8, char & 0xFF); } 返回字节; }code 打印“char is equal to 65533”,字节打印出 255, 253,这意味着它的值为 0xFFFD

标签: javascript c++ char byte


【解决方案1】:

我相信这会成功:

console.log("data1[0] = " + data1[0].toString(16));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 2013-03-31
    • 2015-02-14
    • 1970-01-01
    • 2014-09-18
    相关资源
    最近更新 更多