You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

由0/1或0/F组成的十六进制转二进制表示形式转换需求

两种特殊十六进制转换需求的实现方案

嘿,我来帮你搞定这两个有点特殊的十六进制转换需求,每个需求我都会讲清楚逻辑、示例,再给你实用的代码实现思路(以Python为例,毕竟它处理进制转换很顺手):

1. 由0和1组成的十六进制数转二进制等效值

这个需求很直接:把仅包含0和1的十六进制数,转换成它对应的数值等效二进制表示。因为十六进制的每一位对应4位二进制,本质上就是把十六进制数的数值转成二进制字符串即可。

示例

  • 输入:0x0101(十进制257)
  • 输出:0b100000001(如果需要保留完整的16位前导零,结果为0b0000000100000001)

代码实现

# 定义输入的十六进制数
hex_num = 0x0101

# 获取标准二进制表示(自动去掉前导零)
binary_eq = bin(hex_num)
print(binary_eq)  # 输出: 0b100000001

# 如果需要保留和十六进制位数一致的二进制位(比如16位)
binary_padded = format(hex_num, '016b')
print(f"0b{binary_padded}")  # 输出: 0b0000000100000001

2. 将仅含0/F的十六进制数转换为代表其二进制映射的十六进制数

这个需求的逻辑稍微绕一点,核心是把十六进制的每一位字符当成二进制位映射:F替换成1,0替换成0,得到一个二进制字符串后,再把这个二进制字符串转换成十六进制数。

规则与示例

  • 规则:输入的十六进制数仅由0和F(大小写均可)组成,先将每一位替换为二进制位(F→1,0→0),再将得到的二进制字符串转为十六进制。
  • 示例1:输入0x0101,将每一位0/1直接作为二进制位得到0101,转十六进制就是0x5
  • 示例2:输入0xf00f,替换F为1后得到二进制字符串1001,转十六进制就是0x9

代码实现

def hex_to_binary_mapped_hex(input_hex):
    # 把十六进制数转成小写字符串(去掉前缀0x)
    hex_str = hex(input_hex)[2:].lower()
    # 替换每一位:f→1,0→0
    bin_str = ''.join('1' if c == 'f' else '0' for c in hex_str)
    # 把二进制字符串转成十六进制
    mapped_hex = hex(int(bin_str, 2))
    return mapped_hex

# 测试示例
print(hex_to_binary_mapped_hex(0x0101))  # 输出: 0x5
print(hex_to_binary_mapped_hex(0xf00f))  # 输出: 0x9

内容的提问来源于stack exchange,提问作者Jeremy Pare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 07:03:21