uinicode的翻译问题,不明白
我看到有个说明书这样写:报文是: 测试信息
译 码 为 : 08606D559C53D18D22 ( 08 是 报 文 译 码 后 长 度 , 数 据606D559C53D18D22是“测试信息”的unicode编码,按照内存的编码格式倒过来了)。
不太明白是怎样按照内存编码格式倒转的。我用 unicode转化器得到‘测试信息’编码的是4B6DD58BE14F6F60
希望能帮个忙解释一下 不好意思,前几天到外地去了,没及时回复。
在UltraEdit里面捣鼓了一下,“测试信息”四个字
的UNICODE编码的确是,
0x4B 0x6D 0xD5 0x8B 0xE1 0x4F 0x6F 0x60
“0x60 0x6D 0x55 0x9C 0x53 0xD1 0x8D 0x22”
这段报文是怎样编的码,我就不知道了。但可以肯定的
是,不会是“测试信息”四字的网络字节序。猜测是某种
加密变换。
bingruoice,你能否给出这本说明书上面,关于这段描
述的上下文?
PS:刚才仔细看了一下,我回复的帖子里面有个
错误,网络字节序的"abc"字符串存储的顺
序正确形式是
内存地址 编码 内容
00000000 0x63 c
00000001 0x62 b
00000002 0x61 a
而littel endian 的则是
内存地址 编码 内容
00000000 0x61 a
00000001 0x62 b
00000002 0x63 c Unicode是国际字符集编码,和内存没什么关系。
可能你的问题是指Big-endian和littel-endian。
Big-endian是网络字节序,即低位在前,比如ASCII
的abc三个字符,加载到内存里面,
编码就是0x61 0x62 0x63
但littel-endian则是高位在前,同样abc三个字符,加载
到内存,编码则是0x63 0x62 0x61。
回复 #2 nmap 的帖子
嗯确实是倒转了一下,可是不明白怎么倒转的 在顶一下,我还是不明白啊~~说的具体点,谢谢大家了~~两位两位转的吗? 帮我再看看啊~~5555555 小端:低位在低地址大端:低位在高地址
UNICODE一个字占两字节,当然是两位两位的转,比如:“震”的UNICODE是0x9707,你就要转成0x0797。
下面的宏可以帮你转。
#define HTONS(n) (((((unsigned short)(n) & 0xFF)) << 8) | (((unsigned short)(n) & 0xFF00) >> 8))
#define NTOHS(n) (((((unsigned short)(n) & 0xFF)) << 8) | (((unsigned short)(n) & 0xFF00) >> 8))
#define HTONL(n) (((((unsigned long)(n) & 0xFF)) << 24) | \
((((unsigned long)(n) & 0xFF00)) << 8) | \
((((unsigned long)(n) & 0xFF0000)) >> 8) | \
((((unsigned long)(n) & 0xFF000000)) >> 24))
#define NTOHL(n) (((((unsigned long)(n) & 0xFF)) << 24) | \
((((unsigned long)(n) & 0xFF00)) << 8) | \
((((unsigned long)(n) & 0xFF0000)) >> 8) | \
((((unsigned long)(n) & 0xFF000000)) >> 24))
页:
[1]