如何使Excel2016将一个单词(两个字节)中的十六进制值转换为十进制(0 0xffff必须转换为-1而不是65535)?谢谢
发布于 2018-05-27 11:26:39
假设你有你的16位(2字节)十六进制值。)在单元格A1中,您可以这样做:
=BITXOR(HEX2DEC(A1),2^15)-2^15
这将:
例子:"0“变成0,"7FFF”变成32767,"8000“变成-32768,"FFFF”变成-1。
注意:如果输入值在实际十六进制值之前或之后包含垃圾(例如"0x"),则必须在调用HEX2DEC之前删除该垃圾(例如执行MID(A1、3、4)。
发布于 2018-05-27 11:18:29
前缀0x
(用于指示C中的十六进制符号)可以简单地删除。
然后Excel的HEX2DEC
函数可以进行转换。
因此,如果A1
包含0x3039
,则可以使用B2
(或任何地方)中的公式将其转换为十进制:
=HEX2DEC(MID(A1,3,99))
MID
函数参数表示“返回最多99个字符的字符串,从A1的第三个字符开始。”(因此,删除前两个字符)
为了弥补“定制-1规则”的不足,可以添加一个...and语句:
=IF(LOWER(A1)="0xffff",-1,HEX2DEC(MID(A1,3,99)))
更多资料:
https://stackoverflow.com/questions/50551493
复制相似问题