如何使用JavaScript转换字节数组中的字符串。输出应该等同于下面的C#代码。
UnicodeEncoding encoding = new UnicodeEncoding();
byte[] bytes = encoding.GetBytes(AnyString);
因为UnicodeEncoding在默认情况下是具有低端字符顺序的UTF-16。
编辑:我需要将客户端生成的字节数组与使用上面的C#代码在服务器端生成的字节数组进行匹配。
发布于 2011-06-03 19:52:06
在C#中运行以下代码
UnicodeEncoding encoding = new UnicodeEncoding();
byte[] bytes = encoding.GetBytes("Hello");
将创建一个数组,其中包含
72,0,101,0,108,0,108,0,111,0
对于代码大于255的字符,它将如下所示
如果你想在JavaScript中有一个非常类似的行为,你可以这样做(v2是一个更健壮的解决方案,而原始版本只能在0x00 ~0xff范围内工作)
var str = "Hello竜";
var bytes = []; // char codes
var bytesv2 = []; // char codes
for (var i = 0; i < str.length; ++i) {
var code = str.charCodeAt(i);
bytes = bytes.concat([code]);
bytesv2 = bytesv2.concat([code & 0xff, code / 256 >>> 0]);
}
// 72, 101, 108, 108, 111, 31452
console.log('bytes', bytes.join(', '));
// 72, 0, 101, 0, 108, 0, 108, 0, 111, 0, 220, 122
console.log('bytesv2', bytesv2.join(', '));
发布于 2016-04-04 03:06:34
如果您正在寻找在node.js中工作的解决方案,您可以使用以下代码:
var myBuffer = [];
var str = 'Stack Overflow';
var buffer = new Buffer(str, 'utf16le');
for (var i = 0; i < buffer.length; i++) {
myBuffer.push(buffer[i]);
}
console.log(myBuffer);
发布于 2018-02-13 16:45:19
更新2018 - 2018年最简单的方式应该是TextEncoder
let utf8Encode = new TextEncoder();
utf8Encode.encode("abc")
// Uint8Array [ 97, 98, 99 ]
警告-返回的元素是Uint8Array
和not all browsers support it。
https://stackoverflow.com/questions/6226189
复制相似问题