Answers:
如前所述,公式= DEC2HEX(A1)转换为十六进制,而DEC2HEX(A1,8)转换为0前缀表示32位的十六进制。加前导0会使数字更易读,特别是如果您使用定点字体,则当数字中的所有数字恰好为0-9(例如327701 = 50015)时,十六进制和十进制版本可能会混淆。
一种改进是添加“ 0x”前缀。有两种方法可以做到这一点。=“ 0x”&DEC2HEX(A1,8)可以解决问题,但是它将字段更改为文本字段,因此不再可以在公式中轻松使用。另一种方法是使用自定义格式。如果将自定义格式“ 0x” @应用于单元格,则该单元格的值仍可用于公式中。例子:
╔═══╦════════════════╦════════════╦═══════════════ ══════════════╦═══════════════╗ ║A║B║║ ╠═══╬════════════════╬════════════╬═══════════════ ══════════════╬═══════════════╣ ║1║值║对应公式║数字格式║ ║2║小数║11162790║11162790║一般║ ║3║十六进制║AA54A6║= DEC2HEX(B2)║一般║ ║4║前0的║AA 00AA54A6║= DEC2HEX(B2,8)║一般║ ║5║文本0x前缀║0x00AA54A6║= DEC2HEX(B2,8)║“ 0x” @║ ║6║文本0x前缀║0x00AA54A6║=“ 0x”&DEC2HEX(B2,8)║常规║ ║7║使用B5║AA54A600║= DEC2HEX(HEX2DEC(B5)* 256)║一般║ ║8║使用B5║0xAA54A600║= DEC2HEX(HEX2DEC(B5)* 256)║“ 0x” @║ ║9║尝试使用B6║#NUM!║= DEC2HEX(HEX2DEC(B6)* 256)║常规║ ╚═══牛皮════════════════牛皮════════════牛皮════════════ ══════════════牛皮═══════════════╝
╔═══╦═════════════╦═══════════════╦═══════════════ ═════════════════════╦═════════╗ ║A║B║║ ╠═══╬═════════════╬═══════════════╬═══════════════ ═════════════════════╬═════════╣ ║1║值║对应公式Formula格式║ ║2║小数║3,098,743,209║3098743209║#,## 0║ ║3║高位字节║B8B3║= DEC2HEX(INT(B2 / 2 ^ 16),4)║一般║ ║4║低字节║11A9║= DEC2HEX(MOD(B2,2 ^ 16))║一般║ ║5║整数║0xB8B3_11A9║=“ 0x”&DEC2HEX(INT(B2 / 2 ^ 16),4)║一般║ ║&“ _”和DEC2HEX(MOD(B2,2 ^ 16),4)║ ╚═══牛皮═════════════牛皮═══════════════牛皮═══════════════ ═════════════════════牛皮═════════╝
如果要格式化一个单元格,以便您可以键入一个十进制数字并自动将其显示为十六进制数字,那么这是不可能的。您可以将单元格设置为文本格式并直接输入十六进制数字(但请注意,Excel无法将其用于计算),也可以使用DEC2HEX()
和HEX2DEC()
函数在以10为基数和以16为基数之间进行转换。
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)
REPT公式根据通过从十进制转换后生成的十六进制字符串的长度和所需的十六进制字符串长度来重复“ 0”。在此示例中,我希望生成长度为4的十六进制字符串。
然后,您将前导零连接到实际的HEX字符串,从而生成所需长度的HEX值。
好处:
注意:我在复制十六进制字符串时会用到它,并且它们会以不同的长度被复制。我首先从原始值生成一列十进制值,然后可以对它运行此公式。
DEC2BIN()
转换为二进制的。对于固定宽度的二进制文件,请使用类似=TEXT(DEC2BIN(A1), "0000")