当前位置: 首页 > backend >正文

按位段拼接十六进制

 需求:

给一组位段及对应的值,拼接出该十六进制值。

如,

[15] : 0x1

[31:16] : 0xfafa

[14:1] : 0x1af0

[0:0] : 0x1

def parse_range(range_str):"""解析位段字符串,返回高位和低位"""parts = range_str.split(':')if len(parts) == 1:high = low = int(parts[0])else:high, low = map(int, parts)return high, lowdef hexstr_to_int(hex_str):"""将十六进制字符串转为整数"""return int(hex_str, 16)def set_bits(value_dict):"""根据位段和值(十六进制字符串)进行拼接"""full_value = 0for bit_range, hex_str in value_dict.items():high, low = parse_range(bit_range)width = high - low + 1value = hexstr_to_int(hex_str)if value >= (1 << width):raise ValueError(f"值 {hex_str} 超出位宽 {width} 位能表示的范围")full_value |= (value & ((1 << width) - 1)) << lowreturn full_value# 示例输入,包括一个 1 位宽的字段
input_data = {"15"   : "0x1","31:16": "0xfafa","14:1" : "0x1af0","0:0"  : "0x1"       # 单个位:bit 0
}# 拼接结果
result = set_bits(input_data)# 打印结果
print(f"拼接结果: 0x{result:08x}")  ## 拼接结果: 0xfafab5e1

http://www.xdnf.cn/news/5128.html

相关文章:

  • 算法专题五:位运算
  • 高级3D建模软件 Agisoft Metashape Professional 激活版资源免费下载
  • 学习黑客5 分钟读懂什么是 CVE?
  • 5 种距离算法总结!!
  • gd32 编译环境
  • 关于C#项目中 服务层使用接口的问题
  • 2023年03月青少年软件编程(图形化)等级考试四级编程题
  • GTS-400 系列运动控制器板卡介绍(十九)---PT 静态 FIFO
  • 辉芒微离线烧录器“文件格式错误”问题解决
  • 代采系统:定义、优势与未来趋势
  • 屎上雕花系列-2nd
  • Windows 忘记密码怎么办?
  • Java Stream API 深度解析:从入门到高阶应用
  • 关于VScode的调试
  • YOLO使用CableInspect-AD数据集实现输电线路缺陷检测
  • C++结构体介绍
  • C# NX二次开发:宏录制实战讲解(第一讲)
  • Jetpack Compose 状态管理:为什么 `by viewModel.state` 能自动刷新界面?
  • C语言实现三子棋
  • java volatile关键字
  • LINUX CFS算法解析
  • YOLO目标检测算法
  • 麦角硫因:全能型护肤成分的技术突破与应用前景
  • 数据链路层服务
  • 基础RNN网络详解
  • 餐饮行业新风口:上门厨师服务系统的技术实现路径
  • 机器视觉的平板电脑屏幕组件覆膜应用
  • canoe的安装总结
  • requests库
  • 【笔记】BCEWithLogitsLoss