我以
byte[] bData = new byte[1024];
FS.Read(bData, 0, bData.Length);读取文件数据内容到bData比特数组中。
现在,我想知道,这个bData中,是否存在“0x00,0x16,0x88,0xff,0xff" 16进制数?如何查找,如何比较?
byte[] bData = new byte[1024];
FS.Read(bData, 0, bData.Length);读取文件数据内容到bData比特数组中。
现在,我想知道,这个bData中,是否存在“0x00,0x16,0x88,0xff,0xff" 16进制数?如何查找,如何比较?
{
//存在
}
/// 比较两个字节数组是否相等
/// </summary>
/// <param name="b1">byte数组1</param>
/// <param name="b2">byte数组2</param>
/// <returns>是否相等</returns>
private bool PasswordEquals(byte[] b1, byte[] b2)
{
if (b1.Length != b2.Length) return false;
if (b1 == null || b2 == null) return false;
for (int i = 0; i < b1.Length; i++)
if (b1[i] != b2[i])
return false;
return true;
}
这段数据里是否存在“0x00,0x16,0x88,0xff,0xff" 16进制数?
// 如果找到,返回 pattern 在 s 中第一次出现的位置(0起始)。
// 如果没找到,返回 -1。
static int IndexOf(byte[] s, byte[] pattern)
{
int slen = s.Length;
int plen = pattern.Length;
for (int i = 0; i <= slen - plen; i++)
{
for (int j = 0; j < plen; j++)
{
if (s[i + j] != pattern[j]) break;
}
if (j == plen) return i;
}
return -1;
}
// 如果找到,返回 pattern 在 s 中第一次出现的位置(0起始)。
// 如果没找到,返回 -1。
static int IndexOf(byte[] s, byte[] pattern)
{
int slen = s.Length;
int plen = pattern.Length;
for (int i = 0; i <= slen - plen; i++)
{
for (int j = 0; j < plen; j++)
{
if (s[i + j] != pattern[j]) goto next;
}
return i;
next:;
}
return -1;
}
{
ArrayList btResult = new ArrayList(); ;//定义一个动态数组存储在arr中存在的arrhex中的值
int k = 0;//k用来记录arr和arrhex中相同的元素个数
for (int i = 0; i < arrhex.Length; i++)
{
for (int j = 0; j < arr.Length; j++)
{
if (arrhex[i] == arr[j])
{
btResult.Add(arrhex[i]);
k++;
}
continue;
}
}
}
//调用此方法后,打印k值,如果k=0,则不存在,否则证明存在,存在的元素存放在btResult数组中
foreach(byte s in btResult)
{
Console.WriteLine(s);
}
//打印存在项
调用方法第一个参数是bData,第二个参数是bthex