当前位置:编程学习 > C#/ASP.NET >>

求助,将报文的十六进制转化成转义符

将 00 30 00 01 23 29 05 50转化为下面的这种格式:
 "\x00"  "0"  "\x00\x01"  "#)"  "\x05"  "P"
问了好多人都不会

--------------------编程问答-------------------- 规则不明确 --------------------编程问答-------------------- 将 00   30   00   01     23   29   05     50   转化为下面的这种格式:
  \x00  0   \x00  \x01   #    )    \x05   P
这样看,规则明确了吧,下面这一行好像是C里的转义符吧 --------------------编程问答-------------------- 00  对应   \x00
30  对应   0
01  对应   \X01
23  对应   #
29  对应   ) --------------------编程问答-------------------- 29 是十进制还是十六? --------------------编程问答-------------------- 如果是固定的位置。那你自己不写出来了么?
byte[] data = new byte[]{0x00,0x30,0x01,0x23,0x29};
直接转换对应的char就可以了。
char[] cdata = new char[data.Length];
for(int i=0;i<data.Length;i++)
{
    cdata[i] = (char)data;
}


你的原本就是没任何转换,直接类型转字符就行。 --------------------编程问答-------------------- 左边都是16进制的  就是用抓包工具抓到的数据 --------------------编程问答--------------------

            Console.WriteLine((char)Convert.ToByte("00", 16));
            Console.WriteLine((char)Convert.ToByte("30", 16));
            Console.WriteLine((char)Convert.ToByte("01", 16));
            Console.WriteLine((char)Convert.ToByte("23", 16));
            Console.WriteLine((char)Convert.ToByte("29",16));
--------------------编程问答-------------------- 抓的包 有很多数据的 能保存成文本,如果一行行的转的话要转很久,能不能把文本里的数据一次性的转换。
文本像这样的
58.248.240.208:2800->192.168.1.43:2968
Time 11:11:13:921
0000: B8 AC 6F C3 1D 96 00 0F 7A 14 04 EC 08 00 45 00 ..o.....z.....E.
0010: 00 28 00 00 40 00 40 06 4D 34 3A F8 F0 D0 C0 A8 .(..@.@.M4:.....
0020: 01 2B 0A F0 0B 98 30 E4 F1 BE 00 00 00 00 50 04 .+....0.......P.
0030: 00 00 89 19 00 00 00 00 00 00 00 00             ............

192.168.1.43:2968->58.248.240.208:2800
Time 11:11:13:890
0000: 00 0F 7A 14 04 EC B8 AC 6F C3 1D 96 08 00 45 00 ..z.....o.....E.
0010: 00 30 C6 03 40 00 80 06 47 28 C0 A8 01 2B 3A F8 .0..@...G(...+:.
0020: F0 D0 0B 98 0A F0 1C BE 5A CB 00 00 00 00 70 02 ........Z.....p.
0030: FF FF 07 72 00 00 02 04 05 B4 01 01 04 02       ...r..........

58.248.240.208:2800->192.168.1.43:2968
Time 11:11:13:890
0000: B8 AC 6F C3 1D 96 00 0F 7A 14 04 EC 08 00 45 00 ..o.....z.....E.
0010: 00 30 00 00 40 00 40 06 4D 2C 3A F8 F0 D0 C0 A8 .0..@.@.M,:.....
0020: 01 2B 0A F0 0B 98 30 E4 F1 BC 1C BE 5A CC 70 12 .+....0.....Z.p.
0030: 16 D0 CD EF 00 00 02 04 05 B4 01 01 04 02       .............. --------------------编程问答-------------------- 中间的是 十六进制 右边是acsii码 --------------------编程问答-------------------- 用LoadRunner里的EBCDIC转码  可以把/X00 转化成00 但反过来就不能转化,我就是想反过来转化
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,