首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

一组棘手的byte数组循环

2012-01-30 
一组棘手的byte数组循环,求助小弟写了个开头,写不下去,,希望高手可以帮助写下去THS要求是这样的:字节数组

一组棘手的byte数组循环,求助
小弟写了个开头,写不下去,,希望高手可以帮助写下去
THS

要求是这样的:
字节数组总长度L是已知的,编号为两个字节,编号的内容(字节长度)是根据前面两个字节编号决定的,,请问如何在不超出字节数组总长度L的情况下,将各编号的内容取出(处理).....该循环主要是要取出各编号的具体内容.


///   <summary>
                ///   根据数据标识编码返回数据内容的长度。ItemID,标识编码
                ///   </summary>
                ///   <param   name= "ItemID "> </param>
                ///   <returns> </returns>
                private   int   GetLen(string   ItemID)
                {
                        switch   (ItemID)
                        {
                                case   "902F ":
                                        return   8;

                                case   "916F ":
                                        return   16;

                                case   "902F ":
                                        return   8;

                                //.....................................
                                default:
                                        break;
                        }

                }


                ///   <summary>
                ///   ItemData:数据内容字节帧,totalLen:数据内容长度
                ///   </summary>
                ///   <param   name= "ItemData "> </param>
                ///   <param   name= "totalLen "> </param>
                private   void   ProcTermResponse(byte[]   ItemDatas,   int   totalLen)
                {
                        int   index   =   0;//记录处理位置;
                        int   ItemDataLen;//数据项长度

                        while   (index   <   totalLen)


                        {
                                //数据项编号
                                string   strItemID   =   GetDataItemNO(ItemDatas[index],   ItemDatas[index   +   1]);
                                ItemDataLen   =   GetLen(strItemID);

                                //----------------
                                //对单个数据项内容进行处理,单个数据内容为,ItemDatas[index+2]   ~   ItemDatas[index+2+ItemDataLen   -1]
                                //....................
                                //----------------
                        }
                }

[解决办法]
太乱
[解决办法]
没有看明白....给个数组的例子看看,

看样子好像编号同时又是别的编号所属的内容..
[解决办法]
标识和内容是在一个byte[] 中,如果是,用下面的方法。
byte[] yourbyte = ??;
{
byte[] btl = new byte[2];
int iL = 0;

Buffer.BlockCopy(yourbyte,0,bt1,0,2);

iL = BitConverter.ToInt16(bt1,0);

byte[] bts = new byte[iL];

if(iL > = yourbyte.Length-2)
{
Buffer.BlockCopy(yourbyte,2,bts,0,iL);
//--------bts中进行你的操作----------
}

}
[解决办法]
lz,确实,你的代码风格太乱了...............
[解决办法]
“902F” 两个字节是存不下的。

刚才以为 标识 里面存的是 内容的长度。也解释一下上面的代码:
byte[] yourbyte = ??; //原始的byte数组
{
byte[] btl = new byte[2]; //提取 标识 的byte数组
int iL = 0; //内容的 byte长度

Buffer.BlockCopy(yourbyte,0,bt1,0,2); //从原始 byte数组 提取 标识

iL = BitConverter.ToInt16(bt1,0); // btye[] -> Int32 转换

byte[] bts = new byte[iL];

if(iL > = yourbyte.Length-2)
{
Buffer.BlockCopy(yourbyte,2,bts,0,iL); //同上
//--------根据具体需求对 byte[] 进行操作---------
}
}
[解决办法]
“902F” 两个字节是存不下的。

刚才以为 标识 里面存的是 内容的长度。也解释一下上面的代码:
byte[] yourbyte = ??; //原始的byte数组
{
byte[] btl = new byte[2]; //提取 标识 的byte数组
int iL = 0; //内容的 byte长度

Buffer.BlockCopy(yourbyte,0,bt1,0,2); //从原始 byte数组 提取 标识

iL = BitConverter.ToInt16(bt1,0); // btye[] -> Int32 转换

byte[] bts = new byte[iL];

if(iL > = yourbyte.Length-2)
{
Buffer.BlockCopy(yourbyte,2,bts,0,iL); //同上
//--------根据具体需求对 byte[] 进行操作---------
}
}

热点排行