此SO answer中的代码适用于拉丁字符。
#include <stdio.h>
void charToHex(char *a)
{
char word[17], outword[33];//17:16+1, 33:16*2+1
int i, len;
strcpy(word, a);
len = strlen(word);
if(word[len-1]=='\n')
word[--len] = '\0';
for(i = 0; i<len; i++){
sprintf(outword+i*2, "%02X", word[i]);
}
printf("%s\n", outword);
}
int main(void)
{
char ch[10]="a";
charToHex(ch);
return 0;
}
它为“a”写了61。但是如果我在ch [10]中加上“ق”,它将返回FFFFFFFF82。但它应该是D982。 如何获得阿拉伯字母的真正十六进制值? 您可以使用ideone尝试代码。
感谢。
答案 0 :(得分:1)
D9 = 1101 1001.这成为-ve 1字节数。尝试使用无符号数组它将起作用