C#-将Int转换为十六进制4字节

我想将一个int转换为十六进制的4个字节。

我用这个:

/root

此返回“ 00000032”。

但是我想返回“ 0x00、0x00、0x00、0x32”。

感谢帮助。

zz7630 回答:C#-将Int转换为十六进制4字节

这应该可以完成工作:

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

本文链接:https://www.f2er.com/3160801.html

大家都在问