首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符转换为十六进制

将字符转换为十六进制
EN

Stack Overflow用户
提问于 2014-02-17 10:59:59
回答 1查看 120关注 0票数 0

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

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

代码语言:javascript
复制
foreach(char *v, state) {
    printf("%02X", *v);
}       

对于这封密文:

代码语言:javascript
复制
    '4¥W[™úËj$Ó¶U6

我得到了这个输出:

代码语言:javascript
复制
    2734FFFFFFA5575BFFFFFF99FFFFFFFAFFFFFFCB6A240BFFFFFFD318FFFFFFB65536

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

编辑: foreach代码:

代码语言:javascript
复制
#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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-17 11:07:27

这不是C,C中没有foreach,可能是C++,在这种情况下,问题是printf()%x转换说明符的参数正在被扩展。您的平台可能有一个签名的char类型。

将值转换为unsigned char

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21827245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档