在.NET中将int转换为byte [4]

4

我想知道有没有什么高效的方法可以将整数转换为字节数组[4]?我正在尝试将int写入MemoryStream,而这个东西需要我提供字节

5个回答

14

如果您想将原始类型转换为其字节表示,可以使用BitConverter.GetBytes。只需记得确保字节顺序在您的方案中是正确的即可。


谢谢!我知道有一种简单的方法来做这件事 :) - galets

7

使用BinaryWriter(使用您的内存流构造); 它有一个写入方法,可以接受Int32。

BinaryWriter bw = new BinaryWriter(someStream);
bw.Write(intValue);
bw.Write((Int32)1);
// ...

6
  • BinaryWriter 是向流进行写操作最简单的解决方案。
  • BitConverter.GetBytes 如果你确实需要一个数组,则是最适合的方法。
  • 我自己在MiscUtil中编写的版本(EndianBitConverterEndianBinaryWriter)可以更好地控制字节序,并且还允许您直接将数据转换到现有的数组中。

3
你也可以自己进行位移操作!虽然我会使用内置的方法,但我觉得这很有趣。
byte[] getBytesFromInt(int i){
    return new byte[]{
        (byte)i,
        (byte)(i >> 8),
        (byte)(i >> 16),
        (byte)(i >> 24)
    };
}

当然,接下来你需要担心大小端问题。

同时也是跨平台的,以上代码在Java中同样适用 :) - Gareth Davis
是啊,哈哈,我不得不在Java中实现一个类似的实用程序类,以便我可以控制字节转换 =P - Quintin Robinson


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接