c语言将十六进制数当成十进制计算怎么弄啊

比如说0x1234-0x45,正常算应该得0x11ef,但是我想的得到的是0x1189,就是把十六进制当成十进制来计算了,完全没思路啊

先把'0'~'9', 'a'~'f'转化成0~15的int。然后用int去减int。减完后再将0~15翻译成'0'~'9', 'a'~'f'
如果数字不大,干脆直接scanf("%x", &a);这样去读算了。追问

就是说把十六进制先转换成十进制,然后用十进制计算,计算的结果再转换成十六进制,是这个意思吧。
如果我理解的没错的话这样做是不行的,比如0x1234-0x45,如果是正确的计算的话,不管怎么算最后的结果都是0x1189,不管是十进制还是十六进制,而我想要的结果是0x1189,根本就不是计算正确得到的值。

追答

你是希望按照十进制计算的话,前提是被减数和减数里没有a~f吧?
如果是这样,你就从个位开始直接做减法,高位借位时,高位-1,低位+10就行了。
你有代码片段的话可以贴一下我看看。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网