将int32存储在字节数组中

时间:2012-01-09 20:51:50

标签: c#

如何将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;
}

3 个答案:

答案 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.BlockCopyArray.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。