好的,我正在尝试将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])));
这是我尝试的东西,但很明显,它不起作用。那我该怎么做呢?
答案 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());
这对我有用。不确定我是否有误解。