2016-11-22 278 views
-1

我想将字符转换为十六进制例如我在字符'f'我想在0xf转换它,或者如果我有'9'应该转换为0x9。 目前我做它像十六进制字符?

if(char_array[i]>=0x0A) 
    Hex_array[i] =(char_array[i] - 0x09) | 040; 
else 
    Hex_array[i] = (char_array[i] | 0x30); 

但它仅与下面值的工作“9”。

+2

'040'是八.. 。也许你忘了一点点'x':'0x40' – LPs

+0

哈哈是的,它是0x40。我的不好 –

回答

0

价值040是八进制,但你的代码可以与0x40(十六进制)工作

if(char_array[i]>=0x0A) 
     Hex_array[i] =(char_array[i] - 0x09) | 0x40; 
    else 
     Hex_array[i] = (char_array[i] | 0x30); 

为了提高代码的可读性,您可以使用字符字面

if ((char_array[i]>0x09) && (char_array[i]<0x10)) 
     Hex_array[i] =(char_array[i] - 0x0A) + 'A'; 
    else if ((char_array[i]>=0x00) && (char_array[i]<0x0A)) 
     Hex_array[i] = (char_array[i] + '0'); 
+1

不应该是(char_array [i] <= 0x0F)? – MayurK

相关问题