javascript - 将整数转换为字节串

标签 javascript string int

我有一个变量,我们称它为 myNum,它包含一个 32 位值。我想将它变成一个 4 字节的字符串,其中字符串的每个字节对应于 myNum 的一部分。

我正在尝试执行以下操作(不起作用):

var myNum = someFunctionReturningAnInteger();
var str = "";

str += String.charCodeFrom((myNum >>> 24) & 0xff);
str += String.charCodeFrom((myNum >>> 16) & 0xff);
str += String.charCodeFrom((myNum >>> 8) & 0xff);
str += String.charCodeFrom(myNum & 0xff);

例如,如果 myNum 等于 350,则 str 看起来像 0x00,0x00,0x01,0x5e 当我在 wireshark 中检查它时。

charCodeFrom() 仅在每个字节的值 <= 0x7f 时才执行我想要的操作。是否有独立于浏览器的方式来完成我想做的事情?

谢谢

最佳答案

简而言之:你不能。

更长的时间:发生这种情况是因为字符串中任何具有值 >= 0x80 的字符都将使用浏览器的默认编码(可能是 UTF-8,但偶尔你会发现一个选择“随机”的东西的浏览器)。例如,如果您发送一个值为 \x80 的“字节”,您可能会在线路上看到 \xC2\x80 (`"\xC2\x80".decode("utf-8") == u"\u0080").

您可以将页面编码设置为像 CP1252 这样的 8 位编码,这可以(在某些浏览器中,当星星正确对齐时)哄骗浏览器在编码 JavaScript 字符串时使用相同的编码……但这不能保证跨浏览器兼容。

一些更可靠的选择可能是:

  • 设置终点来将来自 JS 的字符串解码为 un​​icode,然后将它们重新编码为字节(在 Python 中,它类似于 "".join(chr(ord(ub)) for ub在你的_unicode_string))
  • 将“字节”作为整数数组发送:var bytes = [ (myNum >> 24) & 0xFF, … ];

关于javascript - 将整数转换为字节串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12324042/

相关文章:

JavaScript toLocaleTimeString() - 在 Firefox 中无法正常工作

java - ""和 ""之间有什么区别,我如何根据字符测试前者?

ios - 如何将最后一个数组对象获取为int

Python - 从字符串创建矩阵

javascript - 将字符串中的大括号替换为 JSX 中的 HTML span 节点

c++ - 在 c++ 中从 long long 转换为 int 和其他方式

Java - 字符串输入异常处理

javascript - 检查复选框状态是否已更改并且同时按下了提交按钮

javascript - 如何更改 d3JS 力定向图中所有突出显示节点的颜色?

javascript - 在 testcafe 的跨度内搜索跨度