在C中打印十六进制字符我正在尝试读取一行字符,然后打印出字符的十六进制等效字符。例如,如果我有一个字符串,"0xc0 0xc0 abc123"前两个字符是c0十六进制,其余字符是abc123ASCII,那么我应该得到c0 c0 61 62 63 31 32 33但是,printf使用%x给了我ffffffc0 ffffffc0 61 62 63 31 32 33如何在不使用的情况下获得我想要的输出"ffffff"?为什么只有c0(和80)有ffffff,但没有其他字符?
1 回答
繁花如伊
TA贡献2012条经验 获得超12个赞
实际上,有类型转换为int。您还可以使用%hhx说明符强制类型为char。
printf("%hhX", a);
在大多数情况下,您还需要设置最小长度以使用零填充第二个字符:
printf("%02hhX", a);
ISO / IEC 9899:201x说:
7长度修饰符及其含义为:hh指定以下d,i,o,u,x或X转换说明符适用于signed char或unsigned char参数(该参数将根据整数提升进行提升,但在打印前,其值应转换为有符号字符或未签名字符); 或者说是以下
- 1 回答
- 0 关注
- 2492 浏览
添加回答
举报
0/150
提交
取消