如何将int32存储在字节数组中的特定位置?
据我所知,我需要使用BitConverter.GetBytes(value);得到字节[4]。
然后我有一个byte [whatever_size]和offset。
public void SetInt32(byte[] message, int offset, Int32 value)
{
var value_bytes = BitConverter.GetBytes(value);
message[offset] = value_bytes;
}
答案 0 :(得分:7)
您可以使用按位算法直接获取字节:
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];
答案 1 :(得分:4)
您可以使用BitConverter
然后使用Buffer.BlockCopy
或Array.Copy
复制&#34; new&#34;的内容。字节数组到另一个。
或者,您可以从MiscUtil获取EndianBitConverter
代码,这不仅允许您指定字节顺序,还允许您避免创建冗余数组:
EndianBitConverter.Little.CopyBytes(value, message, offset);
答案 2 :(得分:1)
使用
value_bytes.CopyTo(message, offset);
而不是
message[offset] = value_bytes;
假设message
是你的其他字节数组而offset
是指定要复制的位置的int。