我使用 ajax 从 Web 服务器读取二进制文件。HTTP 响应是 contentType: 'application/octet-stream' 并包含一个二进制字符串,它只是一个字节字符串(不是 unicode),例如(十六进制):
0x00 0x08 0x17 0xA1 0x01
注意:在 C 中,这将在内存中表示为 5 个字节:
char buf[5] = {0, 8, 23, 161, 1}
...但在 Javascript 中,这是一个字符串,其 ASCII 表示类似于“�”(我实际上无法正确粘贴它,因为并非所有字符都有可打印的表示)。
我现在需要将其转换为字符或整数数组,以便我可以访问字符串中每个字符的数值。但是,使用 charCodeAt() 函数遍历示例字符串会返回:
[0] 0
[1] 8
[2] 23
[3] 65533
[4] 1
因为 charCodeAt() 解码 unicode 字符,并且 0xA1 不被识别为有效的 unicode 字符,所以使用替换字符(65533) 代替。
我想得到以下信息:
[0] 0
[1] 8
[2] 23
[3] 161
[4] 1
如何做到这一点?
这是代码片段:
$.ajax({
url: url,
type: "get",
success: function(data) { // data contains binary representation of 0x00 0x08 0x17 0xA1 0x01
var byteTab = []
for (var n = 0; n < data.length; ++n) {
byteTab.push(data.charCodeAt(n))
}
})