C:错误的 char 到 ascii 转换(来自扩展 ascii table 的 char)
C : wrong char to ascii conversion (char from the extended ascii table)
我从这样的字符中获取 ascii 码(使用 C 语言):
char * text = "5°";
int sizeText = strlen(text);
int i = 0;
float asciiCode;
for(i=0; i<sizeText; i++) {
asciiCode = (GLfloat)text[i];
}
它适用于 ASCII table(字符编号 0 到 127),但不适用于扩展 ASCII table 中的字符。
例如,我从这个符号“°”得到 -62(它应该是 248)。
我尝试了几种编码,如 UTF-8 和 ISO 8859-1(我正在使用 eclipse cdt 顺便说一句),我每次都得到不同的 ASCII 码,但不是好的 :/
您知道它为什么不起作用吗?我怎样才能让它工作?
谢谢。
我认为你的问题是 assiiCode 是一个浮点数,尝试将它声明为一个 unsigned int
因为 char 是从 -127 到 127。你不能像那样使用扩展 ASCII table。
我建议您改用 wchar
。检查 wchar.h
和 wctype.h
手册。
我从这样的字符中获取 ascii 码(使用 C 语言):
char * text = "5°";
int sizeText = strlen(text);
int i = 0;
float asciiCode;
for(i=0; i<sizeText; i++) {
asciiCode = (GLfloat)text[i];
}
它适用于 ASCII table(字符编号 0 到 127),但不适用于扩展 ASCII table 中的字符。 例如,我从这个符号“°”得到 -62(它应该是 248)。
我尝试了几种编码,如 UTF-8 和 ISO 8859-1(我正在使用 eclipse cdt 顺便说一句),我每次都得到不同的 ASCII 码,但不是好的 :/
您知道它为什么不起作用吗?我怎样才能让它工作?
谢谢。
我认为你的问题是 assiiCode 是一个浮点数,尝试将它声明为一个 unsigned int
因为 char 是从 -127 到 127。你不能像那样使用扩展 ASCII table。
我建议您改用 wchar
。检查 wchar.h
和 wctype.h
手册。