永发信息网

c语言里怎么让按十六进制读取的数也按十六进制输出???

答案:3  悬赏:0  手机版
解决时间 2021-02-19 21:06
c语言里怎么让按十六进制读取的数也按十六进制输出???
最佳答案
不信这段代码能过编译!
按什么进制输出与用什么进制输入无关。
把printf("%#x ",text[i]);改成printf("0x%02x ",test[i]&255);。追问真的可以通过编译啊...只不过用的unsigned char。不过你给的这种方式果然对了!%02x是强制两个数输出吗?追答能通过编译?就text没有声明就过不了吧?
%02x是强制两个数输出,不足两个数时前面补0;而实际多于2个数时%02x并不能截断,所以由对输出变量作&255截取2位,不然会把8以上开头的数字都输出成0xFFFFFF??。追问我在最开始声明了char test[10];实际程序我写的是unsigned char test[10];

对于char test[10]确实如果不做&255截取的话会输出成0xFFFFFF??,如果是unsigned char test[10] 的话好像不用截取也是可以的,多谢指教!追答unsigned这样声明了就不用&255了,因为它永远是正数;正数的前导是0,前导0输出时被自动精简;只有负数才会被符号位扩展而生成FFF...前导!
全部回答
printf("0x%-2d",text[i]); 0x为16进制前缀,%-2d表示总共输出两位整数,不足位往后补0。追问-2d就成十进制输出了,我换成-2x的话会变成0x0,说明我输入00后这个数就是被设成0了,输出也没法成00了...追答这个得转换,你可以自己写进制转换的代码,也可以调函数,十进制毕竟跟16进制还是有区别的,c语言不是很擅长,很少用,网上有很多进制转换的代码,和控制输出格式的函数,你可以去看看。追问恩恩,多谢!追答

没有什么大的要求,其实就这个就可以了,当然自己转换更灵活一些。
 scanf("%hhx",&text[i]);追问

%hhx是啥格式啊?试了好像不行呢,还是输出0追答printf("%#02hhx ",text[i]);追问这样子的话确实输出00了,但不是0x00,上头有人解答的"0x%02x "这种格式就可以了,强制输出0x了,不过还是谢谢解答了!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
本人参加今年浙江烟草省招聘的面试,请问温州
内存条上的"金手指"一般都是有多少个啊
哈尔滨轴承大全我想知道这个在什么地方
洗澡时为什么容易触电
菊苣栀子茶可以连续喝多久
altium desiger 9中match nets 问题
买房按揭了没钱付会怎么样
尿液正常情况下应该是透明无异味的吗?尿液变
良爱一品鸡排饭地址在什么地方,想过去办事
--Come in please, kids. Make at home. . -T
英语。。。。。。。
现代叉车质量怎么样
下列关于等位基因的叙述中,正确的是AA. 等位
求各路大神帮忙 污字有哪些 我知道 咬 否 莪
老公说就算山无棱 就算天地也相连 我的手会一
推荐资讯
马塞诸塞英语怎么说
青华线一般几点从青浦汽车站开出的!求具体时
我要开一个小旅馆,不知道要叫什么名字.请大家
艾晶彩怎么去啊,有知道地址的么
20o6年1月2日出生的男生是什么星座
我国少数民族人口约占全国总人口的比重为CA.
保健品(福成国际大酒店东南)地址在哪,我要去
【据可以组什么词】据可以组什么词
九阴真经江湖情报兑换的武学,入门第一篇,为
vivo xplay3s能玩nba2k15吗
dll load failed 什么原因
如何采用目标与期望管理提高组织工作绩效
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?