将byte []转换为short []

时间:2011-12-29 23:52:08

标签: c# bytearray short

好的,我正在尝试将byte []转换为short []或Int16 []。

List<Int16[]> lol = new List<Int16[]>();
byte[] b = System.Text.Encoding.Default.GetBytes("lolololololololololololoolol");
lol.Add(Convert.ToInt16(b));

MessageBox.Show(Encoding.Default.GetString(Encoding.Default.GetBytes(lol[0])));

这是我尝试的东西,但很明显,它不起作用。那我该怎么做呢?

4 个答案:

答案 0 :(得分:1)

在我看来,您希望将整个数组转换为一行。可以这样做:

List<Int16[]> lol = new List<Int16[]>();
byte[] b = System.Text.Encoding.Default.GetBytes("lolololololololololololoolol");
lol.Add(Array.ConvertAll(b, x => Convert.ToInt16(x)));

答案 1 :(得分:0)

您必须遍历字节数组,并转换每个元素。

List<Int16[]> lol=new List<Int16[]>();
byte [] b=System.Text.Encoding.Default.GetBytes("lolololololololololololoolol");
Int16 [] a=new Int16 [b.Length];
for (Int32 i=0;i<a.Length;++i) {

    a[i]=Convert.ToInt16(b[i]);

}
lol.Add(a);

答案 2 :(得分:0)

你可能想要BitConverter.ToInt16(),你需要为每对字节调用它。

或者,使用Buffer.BlockCopy一次完成所有操作(使用机器的本机字节顺序)。

答案 3 :(得分:0)

        byte[] by = new byte[5];
        short[] sh = new short[5];
        by[0] = 0x1;
        by[1] = 0x2;
        by[2] = 0x3;
        by[3] = 0x4;
        by[4] = 0x5;

        for (int x = 0; x < sh.GetLength(0); x++)
        {
            sh[x] = by[x];
            MessageBox.Show(by[x].ToString());

这对我有用。不确定我是否有误解。