将int32存储在字节数组中

本文关键字:字节数 数组 字节 int32 存储 | 更新日期: 2023-09-27 18:19:54

如何将int32存储在字节数组中的特定位置?

据我所知,我需要使用BitConverter.GetBytes(value);以获得字节[4]。

然后我有一个字节[whatever_size]和偏移量。

public void SetInt32(byte[] message, int offset, Int32 value)
{
var value_bytes = BitConverter.GetBytes(value);
message[offset] = value_bytes;
}

将int32存储在字节数组中

您可以使用逐位算术直接获取字节:

byte temp[4];
temp[3] = value & 0xFF;
temp[2] = (value >> 8) & 0xFF;
temp[1] = (value >> 16) & 0xFF;
temp[0] = (value >> 24) & 0xFF;
for(int i = 0; i < 4; i++)
    message[offset+i] = temp[i];

您可以使用BitConverter,然后使用Buffer.BlockCopyArray.Copy将"新"字节数组的内容复制到另一个中。

或者,您可以从MiscUtil中获取EndianBitConverter代码,它不仅允许您指定端序,还允许您避免创建冗余数组:

EndianBitConverter.Little.CopyBytes(value, message, offset);

使用

value_bytes.CopyTo(message, offset);

而不是

message[offset] = value_bytes;

假设message是另一个字节数组,offset是指定复制位置的int。