gpt4 book ai didi

javascript - 在 Javascript (Ajax) 中检索二进制数据

转载 作者:行者123 更新时间:2023-12-02 19:52:39 25 4
gpt4 key购买 nike

我试图让这个远程二进制文件读取字节,这些字节(当然)应该在 0..255 范围内。由于响应以字符串形式给出,因此我需要使用 charCodeAt 来获取每个字符的数值。我遇到过 charCodeAt 返回 UTF8 格式的值的问题(如果我没记错的话),因此,例如 ASCII 值 139 被转换为 8249。这搞乱了我的整个应用程序,因为我需要获取这些值,因为它们是从服务器。

直接的解决方案是创建一个大开关,对于每个给定的 UTF8 代码将返回相应的 ASCII。但我想知道是否有更优雅、更简单的解决方案。提前致谢。

最佳答案

以下代码是从对此 StackOverflow question的答案中提取的 应该可以帮助您解决问题。

function stringToBytesFaster ( str ) { 
var ch, st, re = [], j=0;
for (var i = 0; i < str.length; i++ ) {
ch = str.charCodeAt(i);
if(ch < 127)
{
re[j++] = ch & 0xFF;
}
else
{
st = []; // clear stack
do {
st.push( ch & 0xFF ); // push byte to stack
ch = ch >> 8; // shift value down by 1 byte
}
while ( ch );
// add stack contents to result
// done because chars have "wrong" endianness
st = st.reverse();
for(var k=0;k<st.length; ++k)
re[j++] = st[k];
}
}
// return an array of bytes
return re;
}

var str = "\x8b\x00\x01\x41A\u1242B\u4123C";

alert(stringToBytesFaster(str)); // 139,0,1,65,65,18,66,66,65,35,67

关于javascript - 在 Javascript (Ajax) 中检索二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9093152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com