如何将int转换为byte的数组然后返回?

Aar*_*ndt 3 .net c# lua byte

我需要通过NetworkStream发送一个整数.问题是我只能发送字节.这就是为什么我需要将整数分成四个字节并发送它们,另一端将其转换回int.

现在我只需要在C#中使用它.但是对于最终项目,我需要将四个字节转换为Lua中的int.

[编辑]在Lua怎么样?

Mik*_*son 9

BitConverter是最简单的方法,但如果你想控制字节的顺序,你可以自己进行位移.

int foo = int.MaxValue;
byte lolo = (byte)(foo & 0xff);
byte hilo = (byte)((foo >> 8) & 0xff);
byte lohi = (byte)((foo >> 16) & 0xff);
byte hihi = (byte)(foo >> 24);
Run Code Online (Sandbox Code Playgroud)

另外..BitConverter的实现使用不安全和指针,但它简短而简单.

public static unsafe byte[] GetBytes(int value)
{
   byte[] buffer = new byte[4];
   fixed (byte* numRef = buffer)
   {
      *((int*) numRef) = value;
   }
   return buffer;
}
Run Code Online (Sandbox Code Playgroud)


mah*_*hju 6

尝试

BitConverter.GetBytes()

http://msdn.microsoft.com/en-us/library/system.bitconverter.aspx

请记住,返回数组中字节的顺序取决于系统的字节顺序.

编辑:至于Lua部分,我不知道如何转换回来.您总是可以乘以16来获得与按位移位相同的功能.它不是很漂亮,我会想象有一些库或某些东西可以实现它.同样,添加字节的顺序取决于字节顺序,因此您可能想要阅读它

也许你可以转换回C#?