以反向字节顺序从基数16转换为基数10

时间:2013-12-05 14:07:13

标签: c# .net binary network-programming

我正在从硬件的网络流中读取数据,该数据以固定标头开头,后跟预期数据的长度,作为System.UInt16,其第一个字节为0x23,第二个字节为0x00。假设字节的顺序根据硬件文档反转,并且我应该将此ushort转换为的值为35,它是从基数16转换为基数10的。

考虑到反向排序的字节,我怎么能以编程方式进行这种转换。我目前正在使用BinaryReader.ReadUInt16()。

更新:请注意,我不打算使用System.Convert.ToString(value, base)转换为字符串。

1 个答案:

答案 0 :(得分:1)

这对您有用吗?

byte a1 = 0x23;
byte a2 = 0x00;

ushort a12 = (ushort)(a1 << 8 | a2); //This what you receive
ushort a21 = (ushort)((a12 & 0xFF00) >> 8 | (a12 & 0xFF) << 8);