我想做什么: 用十六进制打印每个字节,对于C中的int类型编号,逐字节打印
我得到的是: 打印每个数字128的字节,得到00 00 00 ffffff80而不是得到00 00 00 80
问题:当字节的第一位为1时,为什么我的PC填充为1s?
code:
#include "stdio.h"
void show_bytes(char* p, int len){
int i;
printf("With padding:\t\t");
for(i = 0; i < len; i++){
printf("%.2x\t", p[len - 1 - i]);
}
printf("\n");
printf("Mask of padding:\t");
for(i = 0; i < len; i++){
printf("%.2x\t", 0xFF & p[len - 1 - i]);
}
printf("\n");
}
void show_bytes_of_int(int x){
show_bytes((char*) &x, sizeof(int));
}
int main(){
show_bytes_of_int(128);
printf("%.2x\n", 128);
return 0;
}