Это область, где вы должны быть очень осторожны с «порядком байтов»;в большинстве простых сценариев лучше всего использовать сменные операции, например
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));
}
В более нюансированных случаях есть тип new-ish 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
)