将整数数组转换为字节数组 [英] Convert an integer array to a byte array

查看:127
本文介绍了将整数数组转换为字节数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找一种方法将整数数组转换为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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆