我想将一个int转换为十六进制的4个字节。
我用这个:
/root
此返回“ 00000032”。
但是我想返回“ 0x00、0x00、0x00、0x32”。
感谢帮助。
我想将一个int转换为十六进制的4个字节。
我用这个:
/root
此返回“ 00000032”。
但是我想返回“ 0x00、0x00、0x00、0x32”。
感谢帮助。
这应该可以完成工作:
preventDefault
,
在这方面,您需要非常注意“字节序”;在最简单的情况下,最好的选择是使用移位操作,即
static void Main()
{
static string ByteHex(int value) => (value & 0xFF).ToString("X2");
int a = 50;
Console.WriteLine("0x" + ByteHex(a >> 24));
Console.WriteLine("0x" + ByteHex(a >> 16));
Console.WriteLine("0x" + ByteHex(a >> 8));
Console.WriteLine("0x" + ByteHex(a));
}
在更细微的情况下,有一种新颖的BinaryPrimitives
类型是您的朋友:
int a = 50;
Span<byte> span = stackalloc byte[4];
BinaryPrimitives.WriteInt32BigEndian(span,a);
// now access span[0] - span[3]
通常比BitConverter
更可取,其中a:是分配繁重的,b:是笨拙的字节序(您需要启用BitConverter.IsLittleEndian
)