我需要在hexadecimal
中以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;
}
输出如下(其中size = 1,length = 10):
31 ED 5E 89 E1 83 E4 F0 50 54
我需要在size = 2
和length = 5
时输出结果为:
ED31 895E 83E1 F0E4 5450
(注意little endian
)
我不知何故需要使用size参数来改变输出,但我不知道如何。
我认为这与%02x
格式有关,我尝试%04x
,但我得到的只是:
0031 00ED 005E 0089 00E1 0083 00E4 00F0 0050 0054
答案 0 :(得分:1)
按两个字节读取两个字节并执行:
printf ("%04x", (unsigned int) ptr[i] | (unsigned int) ptr[i + 1] << 8);