【发布时间】:2012-07-01 01:47:03
【问题描述】:
我正在使用 TCP 协议并从套接字读取并将数据写入 byte[] 数组。
这是我的数据示例:
94 39 E5 D9 32 83
D8 5D 4C B1 CB 99
08 00 45 00 00 98
41 9F 40 00 6C 06
9C 46 26 50 48 7D
C0 A8 01 05 03 28
我创建了一个大小为 1024 的 byte[] 数组。现在我使用此方法从中删除空索引:
public void Decode(byte[] packet)
{
byte[] temp;
int c = 0;
foreach(byte x in packet)
if (x != 0)
c++;
temp = new byte[c];
for (int i = 0; i < c; i++)
temp[i] = packet[i];
MessageBox.Show(temp.Length.ToString());
}
但它也会删除可能有用数据的 0x00 索引...
如何删除未使用非零数据(尾随 0)包裹的 0?
【问题讨论】:
-
如何判断零是否“有用”?
-
空索引是什么意思?
-
@harold 因为订单对我来说非常重要...
-
数组中的索引不能为空。既不是值,因为
byte是值类型。是否要从数组中删除 0x00 值? -
当你的 byte[] 被填充时,你应该在某处得到一个值,告诉你读取了多少字节(这目前可能是来自被忽略的
Read方法的返回值)。您应该使用它来调整数组的大小,而不是仅仅从末尾修剪 0。