将整数数组转换为字节数组 [英] Convert an integer array to a byte array
问题描述
我正在寻找一种方法将整数数组转换为c#中的字节数组,以便使用现有的数据库设计?
取决于你究竟是什么尝试这样做。
如果你有一个整数数组,并且想要将它转换为字节流,以便稍后可以重新生成相同的数组,那么尝试Buffer.BlockCopy [ ^ ]
byte [] bytes = new byte [arrayOfInts.Length * sizeof ( int )];
Buffer.BlockCopy(arrayOfInts, 0 ,bytes, 0 , byte .Length);
如果您尝试将单个值转换为每个字节,则使用Linq:
byte [] bytes = arrayOfInts.Select(i = > ( byte )i)。ToArray();
幸运的是我在一个我的应用程序。
这是代码:
public static byte [] IntArrayToByteArray(int [] ints)
{
List < byte > bytes = new List < byte > (ints.GetUpperBound(0)* sizeof(byte));
foreach(整数in int)
{
bytes.Add(BitConverter.GetBytes(integer)[0]);
}
return bytes.ToArray();
}
有些人会认为这很笨重,不过我试过的其他方法(不要问)我哪些因为他们不工作我不记得了...)并不总是将整数转换为正确的字节表示 - 谷歌某处有关于这个'特征'的信息......
//隐藏到字节数组
public byte [] ConvertIntArrayToByteArray( int [] inputElements)
{
< span class =code-keyword> byte [] myFinalBytes = new byte [inputElements .Length * 4 ];
for ( int cnt = 0 ; cnt< inputElements.Length; cnt ++)
{
byte [] myBytes = BitConverter.GetBytes(inputElements [cnt]) ;
Array.Copy(myBytes, 0 ,myFinalBytes,cnt * 4, 4 );
}
return myFinalBytes;
}
//转换为整数数组
public int [] ConvertToInt32Array( byte [] inputElements)
{
int [] myFinalIntegerArray = new int [inputElements.Length / 4 ];
for ( int cnt = 0 ; cnt < inputElements.Length; cnt + = 4 )
{
myFinalIntegerArray [cnt / 4 ] = BitConverter.ToInt32(inputElements,cnt);
}
return myFinalIntegerArray;
}
//来自您的申请的电话:
字节[] myFinalBytes = test.ConvertIntArrayToByteArray(inputElements);
int [] myIntegerArray = test.ConvertToInt32Array(myFinalBytes);
BitConverter Class的帮助链接< a href =https://msdn.microsoft.com/en-我们/库/ de8fssa4(v = vs.110)的.aspx> HTTPS://msdn.microsoft.com/en-us/library/de8fssa4(v = vs.110)的.aspx< / A>并[d a href =https://msdn.microsoft.com/en-us/library/de8fssa4(v=vs.110).aspx\"target =_ blanktitle =New Window> ^< / a> ]
I'm looking a way to convert Integer array to byte array in c# in order to work with an existing database design?
Depends what exactly you are trying to do.
If you have an array of integers and you want to convert it to a stream of bytes so you can regenerate the same array later, then try Buffer.BlockCopy[^]
byte[] bytes = new byte[arrayOfInts.Length * sizeof(int)]; Buffer.BlockCopy(arrayOfInts, 0, bytes, 0, byte.Length);
If you are trying to convert individual values to a byte each then use Linq:
byte[] bytes = arrayOfInts.Select(i => (byte) i).ToArray();
Luckily I do exactly this in one of my apps.
Here's the code:
public static byte[] IntArrayToByteArray(int[] ints) { List<byte> bytes = new List<byte>(ints.GetUpperBound(0) * sizeof(byte)); foreach (int integer in ints) { bytes.Add(BitConverter.GetBytes(integer)[0]); } return bytes.ToArray(); }
Some will see this as clunky, however other methods I have tried(don't ask me which ones as since they didn't work I don't remember...) did not always convert the integer to the correct byte representation - there is information on this 'feature' out on google somewhere...
//Covert To byte Array
public byte[] ConvertIntArrayToByteArray(int[] inputElements) { byte[] myFinalBytes = new byte[inputElements.Length * 4]; for(int cnt = 0 ; cnt<inputElements.Length; cnt ++) { byte[] myBytes = BitConverter.GetBytes(inputElements[cnt]); Array.Copy(myBytes, 0, myFinalBytes, cnt*4, 4); } return myFinalBytes; }
//Convert To Integer Array
public int[] ConvertToInt32Array(byte[] inputElements) { int[] myFinalIntegerArray = new int[inputElements.Length / 4]; for (int cnt = 0; cnt < inputElements.Length; cnt += 4) { myFinalIntegerArray[cnt / 4] = BitConverter.ToInt32(inputElements, cnt); } return myFinalIntegerArray; }
//Call from your application:
byte[] myFinalBytes= test.ConvertIntArrayToByteArray(inputElements); int [] myIntegerArray = test.ConvertToInt32Array(myFinalBytes);
Help Link For BitConverter Class <a href="https://msdn.microsoft.com/en-us/library/de8fssa4(v=vs.110).aspx">https://msdn.microsoft.com/en-us/library/de8fssa4(v=vs.110).aspx</a>[<a href="https://msdn.microsoft.com/en-us/library/de8fssa4(v=vs.110).aspx" target="_blank" title="New Window">^</a>]
这篇关于将整数数组转换为字节数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!