在長字節數組中找到某些字節序列(字符串)的最簡單方法是什麼?查找字符串到ByteArray中。這是一個簡單的解決方案嗎?
預先感謝您!
UPD:我試圖做
my_byte_array.toString().indexOf(needle_string);
的問題是,在閃蒸/空氣串包括UTF8字符,所以的indexOf將返回從字節數組「串」的偏移量不同的值(實際上它是zip壓縮包)
在長字節數組中找到某些字節序列(字符串)的最簡單方法是什麼?查找字符串到ByteArray中。這是一個簡單的解決方案嗎?
預先感謝您!
UPD:我試圖做
my_byte_array.toString().indexOf(needle_string);
的問題是,在閃蒸/空氣串包括UTF8字符,所以的indexOf將返回從字節數組「串」的偏移量不同的值(實際上它是zip壓縮包)
假設數組足夠長,你不希望將其轉換爲字符串,我想我只是硬着頭皮做這樣的事情:
function byteArrayContainsString
(haystack : ByteArray, needleString : String) : Boolean
{
const needle : ByteArray = new ByteArray
needle.writeUTFBytes(needleString)
return byteArrayIndexOf(haystack, needle) !== -1
}
function byteArrayIndexOf
(haystack : ByteArray, needle : ByteArray) : int
{
search: for (var i : int = 0; i < haystack.length; ++i) {
for (var j : int = 0; j < needle.length; ++j)
if (haystack[i + j] !== needle[j])
continue search
return i
}
return -1
}
我相信這會工作:
//needle_string is the sequence you want to find
my_byte_array.toString().indexOf(needle_string);
這將返回-1,如果沒有找到該序列,否則就是序列已找到的索引。
謝謝! @所有其他想法? – Eugeny89