[英]How to read a 16-bit number from a file in C#?
您将不需要处理单个位。 这些是十六进制值,因此 98 是单字节,05 是单字节。
看起来转换中也有错误。 您需要将 LSB 添加到移位的 MSB,而不是相乘。 598 = 0x98 + (0x05 << 8)。 <<8 运算符将您的 MSB 移动一个字节(与将其乘以 256 相同)。
索引 position 5 处的字节为:98(十六进制)
索引 position 6 处的字节为:05(十六进制)
在这种情况下,结果为 0598 或 589(十六进制)
如果您在 C# 中进行数学运算,您可能会看到结果为 integer,即 1432。
MSB
也代表Most significant byte
。
var data = new byte[] { 0xA9, 0x43, 0x50, 0x49, 0x00, 0x98, 0x05, 0x28 };
ushort value = BitConverter.ToUInt16(data, 5);
Console.WriteLine(value.ToString("X4"));
BitConverter.ToUInt16
将从索引5
开始的data
数组中读取两个字节,即0x98
和0x05
。 然后它将应用公式来计算结果,即0x0598
。
公式取决于 CPU 架构字节序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.