将byte[]通过BinaryReader转换成对象

public static object ConvertResponseToObject(byte[] Bytes)
        {
            if (Bytes == null || Bytes.Length == 0) { return null; }

            byte[] tempBytes = Bytes.Clone() as byte[];
            using (MemoryStream memoryStream = new MemoryStream(tempBytes))
            {
                BinaryReader binaryReader = new BinaryReader(memoryStream);
                audio_search_resp result = new audio_search_resp();
                result.version = binaryReader.ReadUInt32();
                result.hintNumOfChannels = binaryReader.ReadUInt32();
                result.array = new audio_search_resp.chunkedResp_t[result.hintNumOfChannels];
                for (int i = 0; i < result.hintNumOfChannels; ++i)
                {
                    result.array[i] = new audio_search_resp.chunkedResp_t();
                    result.array[i].lenSearchResp = binaryReader.ReadUInt32();
                    result.array[i].array = new audio_search_resp.chunkedResp_t.searchResp_t[result.array[i].lenSearchResp];
                    for (int j = 0; j < result.array[i].lenSearchResp; ++j)
                    {
                        result.array[i].array[j] = new audio_search_resp.chunkedResp_t.searchResp_t();
                        result.array[i].array[j].channelD = binaryReader.ReadUInt32();
                        result.array[i].array[j].matchOffsetSec = binaryReader.ReadUInt32();
                        result.array[i].array[j].matchScore = binaryReader.ReadUInt32();
                    }
                }

                return result;
            }
        }

posted on 2012-05-03 10:29  哥是技术人  阅读(615)  评论(0)    收藏  举报

导航