如果这个问题之前已经有人问过,请原谅我,但是我向你保证我已经搜索了互联网,什么都没有找到,可能是因为我没有使用正确的术语。
我想把一个整数转换成小端(?)十六进制表示,就像这样:
303 -> 0x2f010000
我可以看出字节被打包在一起,使得16的位和1的位都在同一个字节中,而4096的位和256的位共享一个字节。如果有人能指点我这种编码的正确术语,我相信我可以找到如何做到这一点的答案。谢谢!
如果这个问题之前已经有人问过,请原谅我,但是我向你保证我已经搜索了互联网,什么都没有找到,可能是因为我没有使用正确的术语。
我想把一个整数转换成小端(?)十六进制表示,就像这样:
303 -> 0x2f010000
我可以看出字节被打包在一起,使得16的位和1的位都在同一个字节中,而4096的位和256的位共享一个字节。如果有人能指点我这种编码的正确术语,我相信我可以找到如何做到这一点的答案。谢谢!
使用位移运算符与按位 AND 和 OR 运算符结合...
假设为 32 位无符号数:
int value = 303;
int result = 0x00000000;
for (int i = 0; i < 4; i++)
{
result = result | ((value & (0xFF << (i * 8))) << (24 - (i * 8)));
}
Private Function Encode(ByVal original As Integer) as Byte()
Dim twofiftysixes As Integer = CInt(Math.Floor(original / 256))
Dim sixteens As Integer = CInt(Math.Floor((original - (256 * twofiftysixes)) / 16))
Dim ones As Integer = original Mod 16
Dim bytecode As Byte() = {CByte((16 * sixteens) + ones), CByte(twofiftysixes), 0, 0}
Return bytecode
End Function
将整数有效地分解为其十六进制组件,然后将适当的对转换为cBytes。