以相反的字节顺序从16进制转换到10进制

本文关键字:转换 进制 字节 顺序 | 更新日期: 2024-07-27 20:21:05

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

考虑到逆序字节,我怎么能用程序进行这种转换呢。我现在正在使用BinaryReader.ReadUInt16()。

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

以相反的字节顺序从16进制转换到10进制

这适用于您的吗?

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);