将代表一个十六进制数的char数组从最高符号位逐个取出
在写性能测试的时候,需要将一个很长的十六进制数按照每四个字节一组存入寄存器。于是构造了一个char数组存放该数。
使用`printf("0x%02x ", text[i]);`将每个字节打印出来,却发现对于`0xf0 0xf1`等以f为开头的字节,打印时会变成`0xffff ffff`。
原来对于x来说,匹配的是无符号整型,而char有符号,当符号位为1时,会进行提升,多出来的四bit按照符号位填充。
在写性能测试的时候,需要将一个很长的十六进制数按照每四个字节一组存入寄存器。于是构造了一个char数组存放该数。
使用`printf("0x%02x ", text[i]);`将每个字节打印出来,却发现对于`0xf0 0xf1`等以f为开头的字节,打印时会变成`0xffff ffff`。
原来对于x来说,匹配的是无符号整型,而char有符号,当符号位为1时,会进行提升,多出来的四bit按照符号位填充。