Excel中一个单词中的十六进制值

Excel中一个单词中的十六进制值,excel,excel-formula,excel-2016,c,Excel,Excel Formula,Excel 2016,C,如何使Excel 2016将一个单词(两个字节)中的十六进制值转换为十进制(0xffff必须转换为-1,而不是65535)? 谢谢,前缀0x(在中用于表示十六进制表示法)可以简单地删除 然后Excel的HEX2DEC函数可以进行转换 因此,如果A1包含0x3039,您可以在B2(或任何地方)中使用此公式将其转换为十进制: =HEX2DEC(MID(A1,3,99)) MID函数参数表示“返回最多99个字符的字符串,从A1的第3个字符开始。”(因此,删除前两个字符) …为了弥补您的“自定义-1规

如何使Excel 2016将一个单词(两个字节)中的十六进制值转换为十进制(0xffff必须转换为-1,而不是65535)?
谢谢,前缀
0x
(在中用于表示十六进制表示法)可以简单地删除

然后Excel的
HEX2DEC
函数可以进行转换

因此,如果
A1
包含
0x3039
,您可以在
B2
(或任何地方)中使用此公式将其转换为十进制:

=HEX2DEC(MID(A1,3,99))
MID
函数参数表示“返回最多99个字符的字符串,从A1的第3个字符开始。”(因此,删除前两个字符)

…为了弥补您的“自定义-1规则”,您可以添加
IF
语句:

=IF(LOWER(A1)="0xffff",-1,HEX2DEC(MID(A1,3,99)))

更多信息:
  • Office.com:
  • Office.com:
  • 维基百科:
  • Office.com:

前缀
0x
(用于表示中的十六进制表示法)可以简单地删除

然后Excel的
HEX2DEC
函数可以进行转换

因此,如果
A1
包含
0x3039
,您可以在
B2
(或任何地方)中使用此公式将其转换为十进制:

=HEX2DEC(MID(A1,3,99))
MID
函数参数表示“返回最多99个字符的字符串,从A1的第3个字符开始。”(因此,删除前两个字符)

…为了弥补您的“自定义-1规则”,您可以添加
IF
语句:

=IF(LOWER(A1)="0xffff",-1,HEX2DEC(MID(A1,3,99)))

更多信息:
  • Office.com:
  • Office.com:
  • 维基百科:
  • Office.com:

假设单元格A1中有16位(2字节)十六进制值(例如“FFFF”),则可以执行以下操作:

=BITXOR(HEX2DEC(A1),2^15)-2^15
这将:

  • 将十六进制值转换为无符号十进制(数字的预期负范围从2^15开始,即高于预期非负范围)
  • 反转最高有效位(位15),以交换预期的非负和负范围(此时两个范围仍为非负,但现在预期的负范围低于预期的非负范围)
  • 将两个量程向下移动,使预期负量程在零以下到达其最终目的地,而预期非负量程在零及以上到达其最终目的地
  • 示例:“0”变为0,“7FFF”变为32767,“8000”变为-32768,“FFFF”变为-1


    注意:如果输入值在实际十六进制值之前或之后包含垃圾(例如“0x”),则在调用HEX2DEC之前必须删除此垃圾(例如,通过执行MID(A1,3,4))。

    假设单元格A1中有16位(2字节)十六进制值(例如“FFFF”),则可以执行以下操作:

    =BITXOR(HEX2DEC(A1),2^15)-2^15
    
    这将:

  • 将十六进制值转换为无符号十进制(数字的预期负范围从2^15开始,即高于预期非负范围)
  • 反转最高有效位(位15),以交换预期的非负和负范围(此时两个范围仍为非负,但现在预期的负范围低于预期的非负范围)
  • 将两个量程向下移动,使预期负量程在零以下到达其最终目的地,而预期非负量程在零及以上到达其最终目的地
  • 示例:“0”变为0,“7FFF”变为32767,“8000”变为-32768,“FFFF”变为-1


    注意:如果输入值在实际十六进制值之前或之后包含垃圾(例如“0x”),则在调用HEX2DEC之前必须删除此垃圾(例如通过执行MID(A1,3,4))。

    …但是
    FFFF
    不是-1
    ffffffff
    -1
    。您能否提供一个示例,说明您正在尝试执行的操作,以及您迄今为止尝试过的操作?打开常用的Windows计算器(calc命令)。选择编程模式和十进制值。加入-1。现在转换为十六进制取决于您在菜单中选择的内容:BYTE、WORD、DWORD、QWORD:FF、FFFF、ffffffffff、ffffffffff换句话说,十六进制中-1的表示取决于您为数字设置的字节数。它将始终为FF,但长度不同。对于-2和几乎所有其他负数也是如此。我原来的问题已经回答了,谢谢……但是
    FFFF
    不是-1
    ffffffff
    -1
    。您能否提供一个示例,说明您正在尝试执行的操作,以及您迄今为止尝试过的操作?打开常用的Windows计算器(calc命令)。选择编程模式和十进制值。加入-1。现在转换为十六进制取决于您在菜单中选择的内容:BYTE、WORD、DWORD、QWORD:FF、FFFF、ffffffffff、ffffffffff换句话说,十六进制中-1的表示取决于您为数字设置的字节数。它将始终为FF,但长度不同。对于-2和几乎所有其他负数也是如此。我原来的问题已经回答了,谢谢,但是我真的很惊讶没有正常的方法来做。最简单的方法就是向HEX2DEC函数添加另一个参数:多少字节。尽管Excel的灵活性和实用性备受赞誉,但还是非常感谢。@Levi,我同意在Excel中直接支持这一点会很好,但至少我们现在有了像BITXOR这样的函数,直到2013年才添加到Excel中。也许有一天,微软的程序员会为与编程相关的函数增加更好的支持。:-)顺便说一句,请接受我的回答。:-)谢谢,但我真的很惊讶,没有正常的方式来做这件事。最简单的方法就是向HEX2DEC函数添加另一个参数:多少字节。尽管Excel的灵活性和实用性备受赞誉,但还是非常感谢。@Levi,我同意在Excel中直接支持这一点会很好,但至少我们现在有了像BITXOR这样的函数,直到2013年才添加到Excel中。也许有一天微软的程序员们会加入进来