我的问题是int
值与输入的值不同,因此我不知道在阅读二进制文件后我应该如何前进。我错过了如何阅读二进制文件的观点吗?
string input = "0802";
byte[] arr = Encoding.Default.GetBytes(input);
using (MemoryStream stream = new MemoryStream(arr))
{
using (BinaryReader reader = new BinaryReader(stream))
{
int a = reader.ReadInt32();
Console.WriteLine(a);
//output: 842020912
}
}
答案 0 :(得分:0)
这是对的。您从字符串中读取4个字节,因此它们被解释为int
的4个字节。
如果你检查"不正确"的十六进制值。数字842020912
它会给你0x32303830
并读取每个字节,因为ASCII给"2080"
。
当您将值读取为little-endian时,顺序会反转。
答案 1 :(得分:0)
你正在以艰难的方式去做。我使用Bytes但可以很容易地修改1in16或int32。 :
string input = "0802";
List<byte> bytes = new List<byte>();
for (int i = 0; i < input.Length; i += 2)
{
bytes.Add(byte.Parse(input.Substring(i, 2), System.Globalization.NumberStyles.HexNumber));
}