十六进制转换十进制问题 求大神解答

FFFFFFFFDEAC8A12 如何转化为十进制,再取绝对值

用数学公式推导出十进制,然后按公式编程就可以了吧。十六进制转十进制,从最右边开始向左依次用该位的数乘上16的0次幂、1次幂、2次幂、、、直到最左边数字乘完,然后把这些数字加起来就是十进制了,希望能帮到你啦,

在16进制中,10~15分别由A~E表示。

图片说明

无论多少进制转换为十进制都是一样的,使用每一位的数值与当前位的位权相乘,然后相加,例如:十六进制数 A2 转换为十进制为 2*16的0次方加上10*16的一次方 的和 为162

数了一下,上面的数值有64bit,所以要定义一个8字节的整型变量(int64_t, long long?),如果上面的字符串再长一点的话,就不能使用C的基本类型了,这时候就必须要考虑用字符串来做,否则会溢出

转化结果 18446744073150432080

转换方法上面都说过了;
取绝对值,你这个有符号的数字的话,最高位bit是1,那就是负数,把最高位取反,最后的数字加1;如果最高是F就换成7,再转换后,加1,就是绝对值