gpt4 book ai didi

javascript - 有没有一种简单的方法来匹配字节数组中的字节数组?

转载 作者:行者123 更新时间:2023-11-28 12:19:40 25 4
gpt4 key购买 nike

我正在尝试检查字节数组中的字节序列。 ByteArray中有没有方法class其工作原理类似于 indexOf()

例如,

我正在尝试查明某个文件是否为 PNG或 JPG,所以我想检查该字符序列的字节数组。

var PNG_INFO:Array = [89,50,4E,47];
var byteArray:ByteArray = new ByteArray();

var position:int = byteArray.indexOf(PNG_INFO);
var value:String = byteArray.readBytes(position, PNG_INFO.length);

if (value =="PNG") { trace("is png") }

我不知道上面的代码是否正确,但是我一直遇到这个问题,我必须在字节数组中找到一个字节数组。所以我的问题是有没有一种方法可以满足我正在寻找的目标?

有关十六进制字符的 PNG header 数组的更多信息 here

更新:
我现在想我希望可以使用正则表达式来查找我正在寻找的内容,如下所示:

// dream code - find the value between those characters 
var data:Object = byteArray.exec(/89,50,4E,47(.*?)0xF0,0xF1/);

当然,这只是一个梦想。如果 ByteArrays 支持 RegEx,那就太容易了。

根据尼克的回答,我需要:

...loop the byte array, grab each byte and if there's a match keep comparing until I either find the full match or the end of the file?

有没有一种方法可以为我完成这部分工作?这就是我想知道的。这似乎是你必须经常做的事情,所以也许有一些功能。如果是这样的话,我可以发布我到目前为止所写的内容。

最佳答案

PNG 和 JPG 都有指定的 header ,并且它们都有特定的尺寸。您只需读取 header 的字节(小心检查字节数组大小,以免超出范围)。对于 PNG,您首先检查是否有 4 个字节要读取,然后获取前 4 个字节,与 0x89、0x50、0x4E、0x47 序列进行比较。对于 JPG,前 3 个字节将为 0xFF 0xD8 0xFF。

还请记住,AS3 Loader 类只能获取任一字节并为您计算出来。

关于javascript - 有没有一种简单的方法来匹配字节数组中的字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41304761/

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