news 2026/4/16 15:28:29

python整形转换成十六进制非字符串形式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python整形转换成十六进制非字符串形式

你想将 Python 的整数转换成非字符串形式的十六进制表示(而非hex()返回的字符串),首先要明确核心概念:Python 中整数本身没有 “进制属性”(内存里都是二进制存储),十进制、十六进制只是整数的书写 / 展示形式,不存在 “十六进制整数” 这个独立类型。你要的 “非字符串十六进制形式”,工程中最常用的是字节串(bytes)/ 字节数组(bytearray)(这是二进制 / 十六进制数据的非字符串存储格式),下面我会详细讲解具体方法。

一、核心概念澄清

  • 0xff本身就是整数255十六进制书写形式(不是字符串),它和255是同一个整数,只是写法不同;
  • 非字符串的 “十六进制载体”:字节串(bytes)、字节数组(bytearray)—— 这是存储十六进制数据的标准非字符串格式(比如硬件通信、文件读写时常用)。

二、方法 1:整数 → 字节串(bytes)(最常用)

使用整数的to_bytes()方法,直接将整数转为对应十六进制的字节串(非字符串),这是工程中最核心的非字符串十六进制转换方式。

语法

python

整数.to_bytes(length, byteorder, signed=False)
参数说明
length字节串的长度(字节数),比如 1 字节 = 2 位十六进制数(0xff=1 字节)
byteorder字节序:'big'(大端,高位在前,默认 / 常用)、'little'(小端,低位在前)
signed是否为有符号整数(True支持负数,False仅支持非负数,默认False

示例(覆盖常见场景)

python

# 示例1:基本转换(非负整数转1字节十六进制字节串) num = 255 # 十进制255 = 十六进制0xff # 转1字节的大端字节串(最常用) byte_data = num.to_bytes(length=1, byteorder='big') print("转换结果:", byte_data) # 输出:b'\xff'(非字符串,是bytes类型) print("类型:", type(byte_data)) # 输出:<class 'bytes'> print("十六进制直观展示:", byte_data.hex()) # 辅助查看十六进制字符串:ff # 示例2:转换为多字节(比如2字节,不足补0) num = 1234 # 十进制1234 = 十六进制0x04d2 # 转2字节大端:高位补0,结果为0x04 0xd2 → b'\x04\xd2' byte_data2 = num.to_bytes(length=2, byteorder='big') print("\n2字节大端结果:", byte_data2) # 输出:b'\x04\xd2' print("十六进制展示:", byte_data2.hex()) # 输出:04d2 # 示例3:小端字节序(低位在前) byte_data3 = num.to_bytes(length=2, byteorder='little') print("2字节小端结果:", byte_data3) # 输出:b'\xd2\x04'(0xd2在前,0x04在后) print("十六进制展示:", byte_data3.hex()) # 输出:d204 # 示例4:负数转换(需设置signed=True) num = -100 # 十进制-100 = 十六进制0x9c(1字节补码) byte_data4 = num.to_bytes(length=1, byteorder='big', signed=True) print("\n负数转换结果:", byte_data4) # 输出:b'\x9c' print("十六进制展示:", byte_data4.hex()) # 输出:9c

三、方法 2:整数 → 字节数组(bytearray)(可变版)

如果需要修改十六进制数据(bytes 是不可变的),可以转为字节数组(bytearray),本质也是非字符串的十六进制形式。

示例

python

num = 156 # 十进制156 = 十六进制0x9c # 方法1:先转bytes再转bytearray b_arr1 = bytearray(num.to_bytes(1, 'big')) # 方法2:直接构造(等价) b_arr2 = bytearray([num]) # 单字节时更简洁 print("字节数组结果:", b_arr1) # 输出:bytearray(b'\x9c') print("类型:", type(b_arr1)) # 输出:<class 'bytearray'> # 可变特性:修改其中的十六进制值 b_arr1[0] = 0xab # 改为十六进制0xab(十进制171) print("修改后:", b_arr1) # 输出:bytearray(b'\xab')

四、补充:“十六进制写法的整数”(本质还是 int)

如果你误以为存在 “非字符串的十六进制整数类型”,要明确:Python 中0xff0X4D2这类写法本身就是整数(不是字符串),只是用十六进制书写,和十进制整数是同一个对象:

python

# 十六进制写法的整数(非字符串,本质是int) hex_num1 = 0xff # 等价于十进制255 hex_num2 = 0X4D2 # 等价于十进制1234(大小写X都可以) print(hex_num1) # 输出:255(打印默认十进制) print(type(hex_num1)) # 输出:<class 'int'> print(hex_num1 == 255) # 输出:True(完全等价)

五、反向验证:字节串 → 整数

为了确认转换正确,可将字节串转回整数(用int.from_bytes()):

python

# 示例:将b'\x04\xd2'转回整数 byte_data = b'\x04\xd2' num = int.from_bytes(byte_data, byteorder='big') print("字节串转回整数:", num) # 输出:1234(和原数一致) # 小端字节串转回 byte_data_little = b'\xd2\x04' num_little = int.from_bytes(byte_data_little, byteorder='little') print("小端字节串转回:", num_little) # 输出:1234(正确)

总结

  1. Python 中无 “十六进制整数类型”,整数的进制仅为书写 / 展示形式,0xff本质是整数 255;
  2. 非字符串的 “十六进制形式” 核心是字节串(bytes)/ 字节数组(bytearray),用to_bytes()实现整数转 bytes(最常用);
  3. 关键参数:length控制字节数,byteorder选大端(big)更符合常规十六进制书写习惯,signed控制是否支持负数。

这些方法覆盖了硬件通信、文件读写、数据加密等场景中最常用的 “非字符串十六进制” 转换需求。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:55:22

智谱Open-AutoGLM部署实战(从环境配置到API调用大揭秘)

第一章&#xff1a;智谱Open-AutoGLM部署教程Open-AutoGLM 是智谱AI推出的一款面向自动化机器学习任务的大语言模型工具&#xff0c;支持代码生成、模型训练流程自动化以及自然语言驱动的建模操作。通过本地部署 Open-AutoGLM&#xff0c;开发者可在私有环境中安全高效地运行 A…

作者头像 李华
网站建设 2026/4/16 9:19:01

Open-AutoGLM深度扩展教程(高手进阶必备)

第一章&#xff1a;Open-AutoGLM 二次开发概述Open-AutoGLM 是一个面向自动化自然语言生成任务的开源框架&#xff0c;基于 GLM 架构构建&#xff0c;支持灵活的任务定义、模型微调与扩展接口。其设计目标是为开发者提供高效、可定制的二次开发能力&#xff0c;适用于智能客服、…

作者头像 李华
网站建设 2026/4/11 11:13:01

Anycubic i3 MEGA 3D打印机固件升级终极指南

Anycubic i3 MEGA 3D打印机固件升级终极指南 【免费下载链接】Marlin-2-0-x-Anycubic-i3-MEGA-S Marlin 2.0.x Version for Anycubic i3 MEGA M/S/P/X/CHIRON and 4MAX with Anycubic TFT or the "new" DGUS Clone TFT - Now also with BLTouch! 项目地址: https:/…

作者头像 李华
网站建设 2026/4/16 10:38:43

揭秘Open-AutoGLM移动端下载难点:3大核心问题与解决方案

第一章&#xff1a;Open-AutoGLM移动端下载难点概述在移动设备上部署和运行大语言模型&#xff08;LLM&#xff09;已成为边缘计算与本地AI推理的重要趋势。然而&#xff0c;Open-AutoGLM作为一款面向自动化任务生成的开源语言模型&#xff0c;在移动端的下载与部署仍面临诸多挑…

作者头像 李华
网站建设 2026/4/16 10:41:02

YOLO模型训练慢?我们提供高性能GPU资源支持

YOLO模型训练慢&#xff1f;我们提供高性能GPU资源支持 在智能制造工厂的质检线上&#xff0c;摄像头每秒捕捉数百张PCB板图像&#xff0c;系统需要精准识别焊点缺陷。开发团队选用了当前最先进的YOLOv8模型&#xff0c;推理速度完全满足实时性要求——但当他们开始训练模型时&…

作者头像 李华