我尝试使用以下代码将int8_t变量的十六进制值写入缓冲区:
#include <stdint.h>
#include <stdio.h>
int main(){
char buf[16];
uint16_t val = 0xDEAD;
int8_t val2 = -50;
sprintf(buf, "%04x%02x", val, val2);
printf("%s\n", buf);
sprintf(buf, "%04x%02x", val, (uint8_t)val2);
printf("%s\n", buf);
return 0;
}
输出如下:
deadffffffce
deadce
如何生成第一个结果?
我编译:gcc(Ubuntu 6.2.0-5ubuntu12)6.2.0 20161005