如何将arabic ascii文本转换为十六进制?

时间:2014-08-15 13:06:34

标签: c hex

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尝试代码。

感谢。

1 个答案:

答案 0 :(得分:1)

D9 = 1101 1001.这成为-ve 1字节数。尝试使用无符号数组它将起作用