关于网友提出的“ 字符串中十六进制的困惑”问题疑问,本网通过在网上对“ 字符串中十六进制的困惑”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 字符串中十六进制的困惑描述:
我定义的一个字符串数组,保留一个泰文字典.
unsigned char wordptr[][20]={
"\x02 ",
"\x09 馗姥潮?,
"\x02¨",
"\x05¨∫?,
"\x05¨守?,
"\x06¨嗟纭",
"\x02‘",
"\x02\xBF\xA1",
"\x06\xBF\xC3\xCD\xC2\xB4\xEC",
"\x09\xBF\xC3\xD2\xB9\xAB\xD4\xCA\xB5\xEC",
"\x03\xBF\xC3\xD5",
"\x08颗袜霉",
"\x08颗厥帷缁"
}
编码通过后(ansi/iso standard c,编码工具是armcc),发现wordptr[11][0] = 0x0f ,明明我赋值\x08,怎么变了.后面wordptr[12]内容也是一样,少了一个字节,\x08\xbf合并成\x0f,(颗的第一个字节为bf)
后再看以上数组成员wordptr[11][0]以上都对了,但在wordptr[11][0]以后就都错了,编码器把\x08\xbf合并成\x0f, 晕晕
后来再想:为什么在"\x02‘",后没出错,而在"\x03\xBF\xC3\xD5",出错了,可能是内存对齐的问题,但不知道到底是出在那里.望各位大哥大姐提供点建议!谢谢!
解决方案1:
不要用这种方式表达。
unsigned int lenptr[] = {
}
用来标记每一项的长度,然后将lenptr和wordptr组合在一起使用就成。使用struct或class来封装。
up
解决方案3:顶~
解决方案4:\x08 是退格符