C语言:当字节以1开头时,为什么要在字节上填充1?

时间:2018-09-12 03:18:39

标签: c padding

我想做什么: 用十六进制打印每个字节,对于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;
}

0 个答案:

没有答案