如何实现Little Endian十六进制到十进制的转换?
小端(Little Endian)十六进制转十进制的实现方法
要实现小端十六进制到十进制的转换,核心逻辑是先将小端十六进制的字节顺序反转,还原为大端十六进制,再转换为十进制数,和你之前实现的十进制转小端十六进制的逻辑完全逆向。
实现函数(VB.NET)
Public Shared Function hexLittleEndianToDecimal(ByVal _sLittleEndianHex As String, ByVal _iBytes As Integer) As Long ' 验证输入的十六进制字符串长度是否与指定字节数匹配(1字节对应2个十六进制字符) If _sLittleEndianHex.Length <> 2 * _iBytes Then Throw New ArgumentException("输入的十六进制字符串长度与指定字节数不匹配") End If Dim sBigEndianHex As String = "" ' 从后往前按每2个字符(1字节)截取,拼接成大端十六进制字符串 For i = _iBytes - 1 To 0 Step -1 sBigEndianHex += _sLittleEndianHex.Substring(i * 2, 2) Next ' 将大端十六进制字符串转换为十进制长整型 Return Convert.ToInt64(sBigEndianHex, 16) End Function
调用示例
对应你提供的测试用例(小端十六进制:86F58622,4字节),可以这样调用:
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click ' 输入小端十六进制字符串,指定字节数为4,得到十进制结果 TextBox3.Text = hexLittleEndianToDecimal("86F58622", 4).ToString() ' 输出结果为:579270022 End Sub
关键逻辑说明
- 小端字节序的特点是低位字节在前,高位字节在后,因此转换时需要先将十六进制字符串按每2个字符(1字节)为单位反转顺序,得到符合人类阅读习惯的大端十六进制。
- 转换为十进制时,直接使用
Convert.ToInt64方法将大端十六进制字符串转为长整型,该方法会自动处理十六进制到十进制的转换。
内容的提问来源于stack exchange,提问作者Charlie
相关产品推荐
相关产品推荐

