将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;
}
您可以使用逐位算术直接获取字节:
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.BlockCopy
或Array.Copy
将"新"字节数组的内容复制到另一个中。
或者,您可以从MiscUtil中获取EndianBitConverter
代码,它不仅允许您指定端序,还允许您避免创建冗余数组:
EndianBitConverter.Little.CopyBytes(value, message, offset);
使用
value_bytes.CopyTo(message, offset);
而不是
message[offset] = value_bytes;
假设message
是另一个字节数组,offset
是指定复制位置的int。