首页/开发/正则与编码速查/进制转换的基本方法与验证

进制转换的基本方法与验证

进制转换靠位权展开与除基取余两条基本方法,2 的幂进制之间可按 3 位、4 位分组互换;工程上的坑集中在基数推断(前导零被当八进制)、位宽、符号位与浮点精度,解析时显式声明基数并用往返转换验证。

正则与编码速查开发更新于 2026-10-17
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌​​​‌‌​‌​​‌​‌‌‌‌​​​​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​‌‌‌​‌‌​​‌‌​​‌​‌​‌‌‌​​‌​​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

位权展开与除基取余

任意进制数都可以按位权展开成十进制:第 n 位(从 0 开始)的数值乘以基数的 n 次方再求和。反方向(十进制转其他进制)用除基取余法,把余数从后往前读。两种方法都是纯数学操作,不需要记忆对照表;工程上真正容易出错的不是算法,而是前缀、前导零与有符号解释这些表示层约定。

基本信息

常用基数二进制 2、八进制 8、十进制 10、十六进制 16
常见前缀0b 二进制、0o 或前导 0 八进制、0x 十六进制;前缀并非所有工具都接受
数字字符基数大于 10 时用 a 到 z 补足,大小写一般不敏感,上限通常为 36
负数二进制层面多用补码表示,最高位为符号位;十六进制写全宽时也按同一位宽解释
验证手段转过去再转回来做往返校验,并检查位宽是否满足字节边界

典型使用场景

  • 读懂权限位、标志位与寄存器值,这些通常以八进制或十六进制给出
  • 处理颜色、内存地址、协议字段等十六进制常量
  • 写脚本做批量转换,避免手工算错
  • 排查「数值对不上」:确认是进制问题还是位宽、符号问题
  • 给二进制数据做位对齐,需要同时关心进制与字节数

命令行与脚本做法

命令行与脚本做法
printf '%d\n' 0x1f        # 十六进制转十进制:31
printf '%x\n' 255          # 十进制转十六进制:ff
printf '%o\n' 8            # 十进制转八进制:10
echo 'obase=16; 255' | bc  # 用 bc 交互式转换
python3 -c "print(int('1010',2), hex(42), bin(255))"  # 各进制互转
python3 -c "print(format(255,'08b'), format(255,'#010x'))"  # 补零与带前缀

方法与适用场景

场景方法注意
其他进制转十进制按位权展开求和注意最高位权重与位宽无关
十进制转其他进制除基取余,余数倒序负数先取绝对值再补符号
同为 2 的幂进制互转按位分组:八进制 3 位一组,十六进制 4 位一组分组要从最低位开始,高位不足补零
解析字符串显式指定基数,不要依赖自动推断前导零可能被当成八进制
验证结果往返转换比对同时校验位宽与大小写形式
小数的进制转换与整数不同:十进制 0.1 无法用有限位二进制精确表示,转换会无限循环下去。做金额或精度敏感的计算时用十进制类型或分数类型,不要用浮点数反复转进制。
八进制是事故高发区:不少语言与工具把前导 0 当作八进制标记,010 不是 10 而是 8。解析外部数据时始终显式声明基数,写数值常量时避免无意义的前导零(以官方文档为准)。

易错点

  • 依赖自动基数推断解析身份证号、工号这类带前导零的字符串,值被静默改变;解析前应显式指定十进制
  • 把八进制当成十进制读:chmod 的 644、755 是八进制,按十进制理解权限会完全不同
  • 负数直接按位展开:补码表示的 -1 在 8 位下是 0xFF,按无符号读出来却是 255,必须先确认位宽与符号约定
  • 分组转换时从高位开始或高位不补零,例如把 0b1011 补成 3 位一组时漏掉前导零,八进制结果算错
  • 用浮点数做进制转换:超出 53 位有效位的整数会被舍入,长数字在转换前后不一致

数据来源与参考

  • Python 标准库文档:int、bin、oct、hex 与 format 迷你语言
  • GNU Coreutils 手册:printf 与数值格式
  • IEEE 754 标准:二进制浮点数表示与精度

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/regex/radix-conversion-basics.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌​​​‌‌​‌​​‌​‌‌‌‌​​​​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​‌‌‌​‌‌​​‌‌​​‌​‌​‌‌‌​​‌​​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​