gpt4 book ai didi

.net - 反转十六进制数字的顺序

转载 作者:行者123 更新时间:2023-12-02 21:10:03 24 4
gpt4 key购买 nike

我需要获取一个整数值并将其转换,以便当它以十六进制表示时,数字会反转。例如:

Dim a As Integer = &H4321
Dim a_changedorder As Integer = ReverseHexDigits(a)
Console.Writeline(a_changedorder.ToString("X4")) ' Should output 1234

如何实现像这样工作的 ReverseHexDigits 方法?

作为第二个示例,&H4F2A 应变为 &HA2F4

最佳答案

虽然 Matt 的方法可行,但将整数转换为十六进制字符串,反转字符串中字符的顺序,然后再次将其解析回整数,效率相当低。如果效率很重要,并且您只需要反转两个字节整数中的半字节,那么以下方法将起作用:

Public Function ReverseHexDigits(input As Integer) As Integer
Return ((input And &HF) << 12) Or
((input And &HF0) << 4) Or
((input And &HF00) >> 4) Or
((input And &HF000) >> 12)
End Function

但是,这很令人困惑,因为它只对较低的两个字节进行操作。如果它对 UShort 变量进行操作会更清楚:

Public Function ReverseHexDigits(input As UShort) As UShort
Return ((input And CUShort(&HF)) << 12) Or
((input And CUShort(&HF0)) << 4) Or
((input And CUShort(&HF00)) >> 4) Or
((input And CUShort(&HF000)) >> 12)
End Function

关于.net - 反转十六进制数字的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34023907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com