Excel 中将十进制转成十六进制 DEC2HEX 函数转换教程
副标题:正数负数转换 补零格式 错误处理与反向转换
核心结论前置:Excel 十进制转十六进制,首选内置函数 DEC2HEX,专门用于十进制数值转换为十六进制文本,支持正数、负数,还可以指定输出字符位数实现补零,转换结果是文本类型,不是数字,工程、单片机、地址编码类表格经常使用这个函数。
一、函数基础对照表
| 项目 | 说明 |
|---|---|
| 函数名称 | DEC2HEX |
| 语法 | DEC2HEX (十进制数值,[字符位数]) |
| 参数 1 number | 需要转换的十进制数字,范围 -549755813888 ~ 549755813887 |
| 参数 2 places | 可选,指定输出十六进制字符长度,不足前面自动补 0 |
| 返回类型 | 文本字符串 |
| 反向函数 | HEX2DEC,十六进制转回十进制 |
二、详细操作步骤
方法 1 基础转换 不带补零
案例:A2 单元格是十进制数字,B2 输出十六进制
- 选中 B2 单元格
- 输入公式 =DEC2HEX(A2)
- 按回车,自动生成对应的十六进制文本
举例:十进制 255,转换结果是 FF
方法 2 指定位数补零
需要固定位数,比如 4 位十六进制,不足前面补 0
公式:=DEC2HEX(A2,4)
举例:十进制 255,转换结果变成 00FF,适合寄存器、地址编码固定长度场景
方法 3 负数十进制转十六进制
DEC2HEX 支持负数,负数输出为32 位补码形式
公式:=DEC2HEX(-1)
结果为 FFFFFFFFFFFFFFFF,也就是补码表示,这个是函数原生特性,和普通无符号十六进制不一样,使用前确认业务是否需要补码格式
方法 4 反向验证 HEX2DEC
转换之后想还原成十进制,使用 HEX2DEC
=HEX2DEC(B2)
补充:没有 DEC2HEX 函数怎么办
如果旧版本 Excel 提示函数不存在,需要启用
【分析工具库】加载项
文件 → 选项 → 加载项 → 转到 → 勾选分析工具库,确定之后 DEC2HEX 就可以正常调用
三、深度注意事项
- DEC2HEX 输出结果是文本,不能直接当成数字参与数学运算,如果后续需要运算,要先用 HEX2DEC 转回十进制
- 如果指定的 places 位数,小于数字本身需要的十六进制长度,函数会报 #NUM! 错误
- 输入非数字、超出函数允许数值范围,同样返回 #NUM! 错误
- 转换出来的十六进制字母默认大写,如果需要小写,可以搭配 LOWER 函数:=LOWER(DEC2HEX(A2))
- 如果业务是无符号长整型,不想要负数补码输出,DEC2HEX 原生不支持,需要改用自定义公式或者 VBA 实现
四、FAQ
Q1:Excel 中将十进制转成十六进制,DEC2HEX 转换出来为什么是文本?
A1:Excel 中将十进制转成十六进制,DEC2HEX 返回值本身就是文本字符串,因为十六进制包含 A-F 字母,无法作为纯数字存储,不能直接加减运算。
Q2:Excel 中将十进制转成十六进制,负数转换为什么是很长一串 F?
A2:Excel 中将十进制转成十六进制,负数采用 32 位补码编码,所以会出现大量 F 开头补码,属于函数默认规则,如果业务不需要补码形式,需要额外自定义转换方案。
Q3:Excel 中将十进制转成十六进制,提示 NUM! 是什么原因?
A3:Excel 中将十进制转成十六进制,NUM! 一般是数值超出 DEC2HEX 允许范围,或者设置的 places 位数太短,容纳不下转换后的十六进制字符。
Q4:Excel 中将十进制转成十六进制,可以批量整列转换吗?
A4:Excel 中将十进制转成十六进制,写好第一行 DEC2HEX 公式之后,鼠标下拉填充柄,就可以批量对整列十进制数字完成十六进制转换。
免责声明
本文内容基于微软 Excel 常规版本功能讲解,DEC2HEX 属于工程函数,依赖分析工具库加载项,公式仅作为技术参考,编码地址相关业务请人工核对转换结果,因补码规则、位数设置错误造成编码偏差,本文不承担相关责任。
