【发布时间】:2020-05-01 18:04:10
【问题描述】:
我有一个文件中所有字节的数组。
{ 0xA0, 0x00, 0xFF, 0xFF, 0xA0, 0x10, 0x01, 0x00, 0x10, 0x32, 0x0D, 0x00, 0x48, 0x00, 0x65, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x6F, 0x00, 0x2C, 0x00, 0x20, 0x00, 0x77, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x6C, 0x00, 0x64, 0x00, 0x21, 0x00, 0xF0, 0xF0 }
我还有一个函数可以读取文件的某个部分,并将位置向前移动。 (像 BinaryReader.ReadX() 一样,除了在数组中。
private static byte[] readBytes(int length)
{
cursorLocation += length;
return new ArraySegment<byte>(bytes, cursorLocation-length, length).ToArray();
}
但是,当我尝试测试某个字节的某个部分是否相同时,它似乎不起作用。例如,这个:
byte[] startup = readBytes(4);
if (startup == new byte[] { 0xA0, 0x00, 0xFF, 0xFF })
{
Console.WriteLine("Matches");
} else
{
Console.WriteLine("Does not match.");
}
返回“不匹配”,而不是“匹配”。我也尝试过连续比较每个数组片段,但这也不起作用。像这样将它们打印成一行:
Console.WriteLine(startup[0]);
Console.WriteLine(startup[1]);
Console.WriteLine(startup[2]);
Console.WriteLine(startup[3]);
按预期返回:
160
0
255
255
我真的不确定出了什么问题,任何帮助将不胜感激。非常感谢!
【问题讨论】:
-
==在数组上是引用相等检查,而不是内容检查。 -
+@MarcGravell 有趣,我应该改用
===吗?谢谢 -
C# 中不存在 === 运算符。您必须编写一个自定义方法,逐个元素地比较两个数组。当然,您还应该首先确保它们的长度相同且不为空。
标签: c# arrays .net console console-application