如何解决在Uint8Array中查找字符串的索引
我有一个Uint8Array,它实际上是PDF文件的内容。我想找到位于该数组中的某些字符串的索引,以便可以在该位置插入一些内容。
为此,我实际上是将Uint8Array转换为字符串,然后在该字符串中搜索我想为其找到索引的字符串。
这是代码段
const pdfStr = new TextDecoder('utf-8').decode(array);
// find Byterange
const byterangePos = this.getSubstringIndex(pdfStr,'/Byterange [',1);
if (byterangePos === -1) {
throw new Error(
'Failed to locate Byterange.'
);
}
getSubstringIndex = (str,substring,n) => {
let times = 0,index = null;
while (times < n && index !== -1) {
index = str.indexOf(substring,index + 1);
times++;
}
return index;
}
array = this.updateArray(array,(byterangePos + '/Byterange '.length),byterange);
我遇到的问题是utf-8字符以可变长度(1-4个字节)的字节进行编码,因此我得到的字符串的长度小于UInt8Array本身的长度,因此通过搜索字符串得到的索引与UInt8Array中的'/ Byterange'字符串的实际位置不匹配,因此它应在应该插入的位置之前插入。
有什么方法可以获取UInt8Array的1字节字符串表示形式,例如ASCII还是类似的东西?
解决方法
我通过更改解决了问题
const pdfStr = new TextDecoder('utf-8').decode(array);
至
const pdfStr = new TextDecoder('ascii').decode(array);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。