我试图用C编写程序来检查内存中的字节并打印其内容。给定一个4字节的无符号整数,函数看起来像是以十六进制的形式将整数的特定字节打印到stdout? printf是否具有某种类似内置的功能?
这是我正在寻找的界面。
// number - the integer to be examined
// order - the byte to be examined, with 0 being the lowest-order
// (first) byte and 3 being the highest order (last) byte
void print_byte(unsigned number, unsigned order);
如果它对实施很重要,那么这将是一个小端机器。
答案 0 :(得分:0)
请试试这个......
#include <stdio.h>
void print_byte(unsigned number, unsigned order)
{
unsigned i = 0;
i = (number >> (8*order)) & 0x000000FF;
printf("Number:0x%08x, Byte:%02x, Order:%d\n",number,i,order);
return;
}
int main(void) {
print_byte(0x1f2e3d4c,0);
print_byte(0x1f2e3d4c,1);
print_byte(0x1f2e3d4c,2);
print_byte(0x1f2e3d4c,3);
return 0;
}
答案 1 :(得分:0)
如果使用C99或更高版本,请在移位后使用长度修饰符"hh"
。此修改器将在打印前将整数转换为unsigned/signed char
。根据&#34; byte&#34;的含义使用8或CHAR_BIT
。
printf("%hhX", number >> (order * 8));
或
#include <limits.h>
printf("%hhX", number >> (order * CHAR_BIT));