|
楼主 |
发表于 2013-9-10 11:53:08
|
显示全部楼层
byte 数组如下
1 0 0 38 1 54 19 80 112 71 0 227 0 0 0 0 55 48 51 50 49 68 77 56 48 48 50 32 0 0 0 0 0 0 0 0 0 0 0 0 0 51 53 48 55 48 52 55 0 0
16进制后如下
0100002601361350704700e3000000003730333231444d383030322000000000000000000000000000333530373034370000
程序如下
将字节数组放入流中,在流中读取0x10个字节
using (MemoryStream stream = new MemoryStream(dst))
{
using (BinaryReader reader = new BinaryReader(stream))
{
this.method_2((byte_0[0] << 8) + byte_0[1]);//14128
this.method_6((ushort) ((byte_0[2] << 8) + byte_0[3]));//13106
this.method_8(byte_0[4].ToString("X2") + byte_0[5].ToString("X2") + byte_0[6].ToString("X2") + byte_0[7].ToString("X2") + byte_0[8].ToString("X2") + byte_0[9].ToString("X2"));//31444D383030
this.method_10((ushort) ((byte_0[10] << 8) + byte_0[11]));//12832
this.method_12((ushort) ((byte_0[12] << 8) + byte_0[13]));//0
this.method_14((ushort) ((byte_0[14] << 8) + byte_0[15]));//0
上述method都是在对属性赋值,这个不用管,//后为得到的值
reader.BaseStream.Seek(-4L, SeekOrigin.Current); //接着提升读取的位置因该是舍去刚读取过的内容
上面获得的都是需要发回去的参数
}}
byte_0 为
0 0 0 0 55 48 51 50 49 68 77 56 48 48 50 32 0 0 0 0 0 0 0 0 0 0 0 0 0 51 53 48 55 48 52 55 0 0
接下来这里得到了需要的内容
this.ProvinceId = (ushort) ((byte_0[0] << 8) + byte_0[1]);
this.CityId = (ushort) ((byte_0[2] << 8) + byte_0[3]);
this.ManufactureId = Encoding.ASCII.GetString(byte_0, 4, 5).TrimEnd(new char[1]);
this.TerminalModelNo = Encoding.ASCII.GetString(byte_0, 9, 20).TrimEnd(new char[1]);
byte[] destinationArray = new byte[7];
Array.Copy(byte_0, 0x1d, destinationArray, 0, 7);
this.TerminalId = destinationArray[0].ToString("X2") + destinationArray[1].ToString("X2") + destinationArray[2].ToString("X2") + destinationArray[3].ToString("X2") + destinationArray[4].ToString("X2") + destinationArray[5].ToString("X2");
this.PlateColor = (GEnum0) byte_0[0x24];
this.LicenseNo = Encoding.GetEncoding("GBK").GetString(byte_0, 0x25, byte_0.Length - 0x25).TrimEnd(new char[1]);
这样他就通过位移得到需要的内容,有点不理解下面位移的时候怎么运算出结果的.
站长说的规则的话就是
dword 占8个byte
word 4个byte
byte
不过按照站长的方法的确可以满足得到结果,现在就是比较好奇怎么通过位移来得到结果.
这个因为是反编译别人的程序,我也不好发上来,免得牵扯到法律问题,下午我写个简易的dom. |
|