关于单片机汉字转十六进制问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于单片机汉字转十六进制问题相关的知识,希望对你有一定的参考价值。
试用的atmel 128单片机。
unsigned char[] = {"你好"};
如何转变为 0xC4 0xE3 0xBA 0xC3
现在两个问题:
1、如何指定字符串的中文编码为GBK编码;
2、如何把GBK编码转换为十六进制,如上。
3、操作系统如linux或者windows我知道可以采用iconv库来指定编码格式并进行转变,但单片机没有此类函数;单片机不知道能否实现以上转变。
补充一下:
平台为:8位的Atmel Atmega328P-AU单片机;此单片机是不带操作系统的;
转换后是发送到一个语音合成模块,而不是显示器(有些显示器带字库)的;
unsigned char buf[] = "你好";
int nLen = strlen(buf); // nLen=7
也就是每个汉字为三个字节,最后为\0,所以长度为7
如其他网友所说,是不是要自己做个字库,或者找一个字库模块。
unsigned int a[] = {"你好"}; 参考技术B 字符串类型其实也是一种数组只不过末尾时“\0”,你只要用一个数字跟其等价就行
方法:建立一个数组实现转换:
void chang_acll(*p)
while(*p != "\0")
p++;
hax_code[i] = *p
i++;
如果不带字库,你肯定要自己做个字库的,网上有现成的方案可以参考 参考技术C 其它的变量,例如
uchar a ,b,c,d;
uchar hz[]="你好";
a=hz[0];
b=hz[1];
c=hz[2];
d=hz[3];
就可以了。
c语言怎么字符串和16进制转码 汉字转16进制如“我”转换成 “0xe68891”; 16进制转汉字“0xe68891”转 我
参考技术A “我”字被转成了3个字节,那想必是用的utf-8了用api的WideCharTpMultiByte即可
以上是关于关于单片机汉字转十六进制问题的主要内容,如果未能解决你的问题,请参考以下文章
c语言怎么字符串和16进制转码 汉字转16进制如“我”转换成 “0xe68891”; 16进制转汉字“0xe68891”转 我