u8 High8bit,Low8bit;
const u8 *str="啊" ;//以啊字为例,其GBK码是,B0A1
printf("\r\n 要读取的 字符是 :%s \r\n", str); // %s输出一个字符串
High8bit=*str; /* 取高8位数据 */
Low8bit=*(str+1); /* 取低8位数据 */
printf("\r\n High8bit :0x%x \r\n", High8bit); //通过串口打印到PC
printf("\r\n Low8bit :0x%x \r\n", Low8bit);
奇怪的事情发生了:
串口显示结果是:
要读取的 字符是 :啊
High8bit :0xffffffb0
Low8bit :0xffffffa1
为什么不是High8bit :0xb0 Low8bit :0xa1 呢????
这6个FFFFFF哪里来的???
要看清其定义是unsigned char啊!!想了半天,始终搞不明白啊。高手请指点一下
最近在学STM32,本来想了解一下GBK码字库,然后相办法把字库从SD卡转写到FLASH芯片W25X26.。
这个取高低8位,怎么去理解好呢?
High8bit=*str; /* 取高8位数据 */
Low8bit=*(str+1); /* 取低8位数据 */
是不是这样,例如“啊”占用两们字节0x00 0x01 , 高8 低8 找到地址。 先取高8 在把指针加1 取低?
如果是这样的话那结果应该是High8bit :0x000000b0 吧,可现在是High8bit :0xffffffb0
追答不好意思刚看到,要是按你评价说的那样,放在子函数中和放在主函数中的寻址方式不一样,且要求主调和被调函数传递的参数类型一致,是不是这原因?在就看看STM32芯片资料了,它用到的指令系统有什么不同的。