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))
}
})