What I try to do: print each byte in hex, for int type number in C, byte by byte
What I get: print each byte of number 128, get 00 00 00 ffffff80 instead of getting 00 00 00 80
Question: Why my PC padding 1s when the first bit of the byte is 1?
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;
}