Javascript 将整数转换为字节字符串
我有一个变量,我们称它为Javascript 将整数转换为字节字符串,javascript,string,int,Javascript,String,Int,我有一个变量,我们称它为myNum,包含一个32位的值。我想把它转换成一个4字节的字符串,其中字符串的每个字节对应于myNum的一部分 我正在尝试做以下类似的事情(不起作用): 例如,如果myNum等于350,那么当我在wireshark中检查它时,str看起来像0x00,0x00,0x01,0x5e charCodeFrom()仅当每个字节都有一个值时才执行我想要的操作简而言之:您不能 更详细地说:这是因为字符串中任何值>=0x80的字符都将使用浏览器的默认编码(可能是UTF-8,但偶尔您会发
myNum
,包含一个32位的值。我想把它转换成一个4字节的字符串,其中字符串的每个字节对应于myNum
的一部分
我正在尝试做以下类似的事情(不起作用):
例如,如果myNum
等于350,那么当我在wireshark中检查它时,str
看起来像0x00
,0x00
,0x01
,0x5e
charCodeFrom()
仅当每个字节都有一个值时才执行我想要的操作简而言之:您不能
更详细地说:这是因为字符串中任何值>=0x80
的字符都将使用浏览器的默认编码(可能是UTF-8,但偶尔您会发现浏览器会选择“随机”的内容)编码为unicode。例如,如果您发送一个值为\x80
的“byte”,您可能会在线路上看到\xC2\x80
(`“\xC2\x80.decode”(“utf-8”)==u“\u0080”)
您可以将页面编码设置为8位编码,如CP1252,这可以(在某些浏览器中,当星星正确对齐时)诱使浏览器在编码JavaScript字符串时使用相同的编码…但这不能保证跨浏览器兼容
一些更可靠的选择可能是:
- 设置端点以将来自JS的字符串解码为unicode,然后将它们重新编码为字节(在Python中,类似于
)“”。在unicode字符串中为ub加入(chr(ord(ub))
- 将“字节”作为整数数组发送:
var bytes=[(myNum>>24)&0xFF,…]代码>
x80
将被编码为\x00\x80
(UTF16),而不是x\c2\x80
(UTF8)在内部,是的,这就是它的编码方式……但在网络上,浏览器将使用(通常,在大多数情况下)页面编码(可能是UTF-8)对其进行编码。
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);