我需要在C
中以十六进制
形式打印字节。我所做的就是一次打印 1 个字节,我的程序必须支持 1、2 或 4 个字节(大小参数)的选项。
这是我的功能:
void memDisaply(char* filename, int size) {
char sentence [100];
unsigned int str[20];
int length,i;
unsigned char* ptr;
printf("Please enter <address> <length>\n");
fflush(stdin);
fgets(sentence,100,stdin);
fgets(sentence,100,stdin);
sscanf (sentence,"%x %d",str,&length);
ptr = (unsigned char*)str;
for (i=0 ; i< length ; i++) {
printf ("%02x",(unsigned int)ptr[i]);
}
/*reset values*/
length = 0;
i = 0;
ptr = NULL;
}
输出如下(其中大小=1,长度=10):
31 ED 5E 89 E1 83 E4 F0 50 54
当 size = 2
和 length = 5
时,我需要输出为:
ED31 895E 83E1 F0E4 5450
(注意小尾数
)
我不知何故需要使用大小参数来改变输出,但我不知道如何。
我认为它与 %02x
格式有关,并且我尝试过 %04x
但我得到的是:
0031 00ED 005E 0089 00E1 0083 00E4 00F0 0050 0054
最佳答案
读取两个字节并执行以下操作:
printf ("%04x", (unsigned int) ptr[i] | (unsigned int) ptr[i + 1] << 8);
关于c - 如何在C中以十六进制格式打印2或4个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23697090/