首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel中一个单词中的十六进制值

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

Stack Overflow用户
提问于 2018-05-27 11:05:42
回答 2查看 3.1K关注 0票数 1

如何使Excel2016将一个单词(两个字节)中的十六进制值转换为十进制(0 0xffff必须转换为-1而不是65535)?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-27 11:26:39

假设你有你的16位(2字节)十六进制值。)在单元格A1中,您可以这样做:

代码语言:javascript
运行
复制
=BITXOR(HEX2DEC(A1),2^15)-2^15

这将:

  1. 将十六进制值转换为无符号小数(数字的预期负值范围从2^15开始,即高于预期的非负范围)。
  2. 反转最重要位(位15),以交换预期的非负和负范围(此时两个范围仍然是非负的,但现在预期的负范围低于预期的非负范围)。
  3. 将两个范围向下移动,以使预期的负范围在零以下到达其最终目的地,而预期的非负范围在零及以上到达其最终目的地。

例子:"0“变成0,"7FFF”变成32767,"8000“变成-32768,"FFFF”变成-1。

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

票数 4
EN

Stack Overflow用户

发布于 2018-05-27 11:18:29

前缀0x (用于指示C中的十六进制符号)可以简单地删除。

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

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

代码语言:javascript
运行
复制
=HEX2DEC(MID(A1,3,99))

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

为了弥补“定制-1规则”的不足,可以添加一个...and语句:

代码语言:javascript
运行
复制
=IF(LOWER(A1)="0xffff",-1,HEX2DEC(MID(A1,3,99)))

更多资料:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50551493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档