C#从uint []转换为byte []

ahm*_*md0 4 c# byte bytearray uint32

这可能是一个简单的,但我似乎找不到一个简单的方法来做到这一点.我需要将84个uint的数组保存到SQL数据库的BINARY字段中.所以我在C#ASP.NET项目中使用以下几行:

//This is what I have
uint[] uintArray;

//I need to convert from uint[] to byte[]
byte[] byteArray = ???

cmd.Parameters.Add("@myBindaryData", SqlDbType.Binary).Value = byteArray;
Run Code Online (Sandbox Code Playgroud)

那么如何从uint []转换为byte []?

Mat*_*att 10

怎么样:

byte[] byteArray = uintArray.SelectMany(BitConverter.GetBytes).ToArray();
Run Code Online (Sandbox Code Playgroud)

这将以小端格式做你想做的事......


Ben*_*lds 5

您可以使用 System.Buffer.BlockCopy 来做到这一点:

byte[] byteArray = new byte[uintArray.Length * 4];
Buffer.BlockCopy(uintArray, 0, byteArray, 0, uintArray.Length * 4];
Run Code Online (Sandbox Code Playgroud)

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

这将比使用 for 循环或一些类似的构造更有效。它直接将字节从第一个数组复制到第二个数组。

要转换回来,只需反向执行相同的操作。