将字符转换为十六进制

时间:2014-02-17 11:00:00

标签: c hex ascii

我正在尝试将密文(来自AES加密)转换为十六进制值。

我正在使用以下代码(状态是密文)进行转换:

foreach(char *v, state) {
    printf("%02X", *v);
}       

对于这个密文:

    '4¥W[™úËj$Ó¶U6

我得到了这个输出:

    2734FFFFFFA5575BFFFFFF99FFFFFFFAFFFFFFCB6A240BFFFFFFD318FFFFFFB65536

这个密文不是正确的十六进制形式。我尝试了其他转换方法,这些都导致了相同的结果。

编辑: foreach代码:

#define foreach(item, array) \
for(int keep = 1, \
count = 0,\
size = sizeof (array) / sizeof *(array); \
keep && count != size; \
keep = !keep, count++) \
for(item = (array) + count; keep; keep = !keep)

1 个答案:

答案 0 :(得分:1)

那不是C,C中没有foreach。它可能是C ++,在这种情况下,问题是printf()的{​​{1}}转换说明符的参数正在签名 - 延长。您的平台可能已签名%x类型。

将值转换为char