【发布时间】:2021-09-05 06:55:42
【问题描述】:
我想将文本文件中的“二进制”数据读入 javascript 字符串(我这样做了),并将字节转换为 ascii 值数组。几天来我一直在尝试完成此操作,但由于我对 utf-16 或 js 没有足够的经验,因此找不到解决方案。
我要转换的数据不是文本。该网站上的大多数示例都处理诸如“Hello”之类的字符串,我无法开始工作。二进制数据由一些(准确地说是 220032)字节组成,它们的值在 0 到 255 之间。
如果有人能指出正确的方向,我将不胜感激。
示例: 原始文件包括(我想得到的字节数组): 十六进制:80 00 F5 03 7E 36 41 01(十进制:128 0 245 3 126 54 65 1)
对于我得到的这些字节(使用 charCodeAt): 十进制:65533 0 65533 3 121 94 20 1
有关该问题的更多信息,因为 stackoverflow 表示它不够清楚。
我有一台分辨率为 382x288 的热像仪,即 110016 像素。每个像素都用一个无符号短表示,每个像素长 2 个字节。制作一帧热数据 220032 字节。我的空间有限,所以我没有考虑 json、xml 等。所以我使用我编写的 c++ 程序从相机获取数据,并将其作为 ascii 字符写入文本文件。
客户希望通过他的公司(电视的电脑平板电脑等)在本地服务器上查看图像。所以我决定为这个项目采用 asp/javascript 的方式。我对javascript不是很好,所以直到很久以后我才知道javascript对我不想要的字符串使用了UTF-16,因为我需要文件中每个字符的ascii代码。
感谢“Joachim Sauer”,他为我指明了正确的方向,我能够使用 fetch 和 Uint8Array 轻松解决问题。
async load_Frame(p_filename){
await fetch("./frames/"+p_filename+".txt")
.then(response=>{
if (!response.ok) throw new Error("problem");
return response.arrayBuffer();
}).then(data=>{
//Here i have the frame as i wanted.
let frame = new Uint8Array(data);
}
}).catch(function(e){
console.log(e);
})
}
和最终产品。 :) 我没有包括热转换例程,因为它们超出了问题的范围。
【问题讨论】:
-
是的,在刷新之前才意识到这一点。不知道有没有办法改正?
-
标签下有一个“编辑”链接。
标签: javascript binary utf-16