Char指向十六进制值

问题描述:

我有一个指向存储值'已完成'的Char指针。Char指向十六进制值

我相信,“完成”十六进制的值应为:656e6f64

但是想我的测试代码时:

unsigned int test = (unsigned int) *label; 
fprintf(stderr, " label is %08x \n", mop); 

它会打印出这样的值:

00000064 

无法真正弄清楚我做错了什么,它是否正在转移?我错了吗?有任何想法吗?

+0

什么是“拖把”?我会发布更多的代码,因为没有足够的空间查明您的问题。 –

+0

引用一个指向'char'的指针会给你*一个*'char',而不是整个数组。更容易有一个指向'int'的指针,并将'char'指针指向该指针。 –

+0

@PaulGriffiths如果字符串比sizeof(int)更长,该怎么办?如果它更短呢? –

我现在能想到的最简单的办法是 -

int i; 
for (i = 0; label[i] != '\0'; i++) 
    printf("%02x", (int)label[i]); 
printf("\n"); 

这应该给你想要什么。此外,任何代表性问题不应该进来。