Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python中不同十六进制类型/表示之间的差异

Python中不同十六进制类型/表示之间的差异
EN

Stack Overflow用户
提问于 2012-10-29 14:44:29
回答 2查看 16.7K关注 0票数 20

通过一些Python代码,我注意到十六进制值有许多不同的表示形式。例如,如果我像这样选择一个数字:

代码语言:javascript
运行
AI代码解释
复制
xx = '\x03\xff'

然后是下面的命令(我正在使用的一个版本将小端转换为大端)

代码语言:javascript
运行
AI代码解释
复制
yy = hex(struct.unpack('>H', xx)[0])

将返回:

代码语言:javascript
运行
AI代码解释
复制
'0x3ff'

但是,此命令

代码语言:javascript
运行
AI代码解释
复制
zz = xx.encode('hex')

将返回:

代码语言:javascript
运行
AI代码解释
复制
'03ff'

最后,仅打印输出的值将返回以下内容

代码语言:javascript
运行
AI代码解释
复制
'\x03\xff'

从它的外观来看,有三种不同类型的十六进制。

  1. '\xFF'
  2. '0xFF'
  3. 'FF'

有什么不同?

如果有人可以建议一种更好的方法将小端数字转换为大端数字,会给出的加分。上面的yy方法对大于两个字节的数字不起作用,我正在处理一些16字节长的十六进制字符串(包括与ascii/整数值不对应的值)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-29 15:09:44

任何使用\x的代码都是字符串转义代码,它恰好使用十六进制表示法;其他转义代码包括表示换行符的\n、表示文字引号的\'等。python字符串是一个字节序列,您可以使用这些字符指定ASCII可打印范围之外的文字值。当Python在解释器中回显字符串值时,或者您在字符串上打印repr()调用的结果时,Python将使用这样的转义来表示任何不能打印为ASCII码字符的字节:

代码语言:javascript
运行
AI代码解释
复制
>>> chr(65)
'A'
>>> chr(11)
'\x0b'

.encode('hex')一样,hex()函数返回一个非常具体的字符串表示,不同之处在于前者包含0x前缀。还有另外两种方法可以生成这样的字符串表示:使用'%x''%X'字符串格式化程序,它们使用小写或大写字母作为表示。

代码语言:javascript
运行
AI代码解释
复制
>>> hex(11)
'0xb'
>>> '\x0b'.encode('hex')
'0b'
>>> '%x' % (11,)
'b'
>>> '%X' % (11,)
'B'

这些都是字符串表示(一系列ASCII字符),与原始数据的关系与str(number)与整数数据的关系相同;您已经更改了类型,并且离更改字节顺序的目标更远了。

要将一段二进制信息从小端更改为大端,您需要知道该信息的大小。如果你所拥有的都是短整数,那么你需要每两个字节翻转一次,但是如果你有正常的(长)整数,那么你每个值有4个字节,你需要颠倒每4个字节。

我认为使用struct模块是一种很好的方法,因为您必须指定值类型。下面的代码将xx解释为一个大端无符号短整数,然后将其打包成一个二进制表示形式,作为一个小端无符号短整数:

代码语言:javascript
运行
AI代码解释
复制
>>> import struct
>>> xx = '\x03\xff'
>>> struct.pack('<H', *struct.unpack('>H', xx))
'\xff\x03'
票数 9
EN

Stack Overflow用户

发布于 2012-10-29 15:00:42

'\xFF‘表示包含ASCII码为255的字符的字符串。

例如:print '\x41'给出'A‘(因为这是带有ASCII码41的字符)

xx.encode('hex')hex(struct.unpack('>H', xx)[0])只是给出了字符串xx包含的ASCII码的人类可读的十六进制表示。这意味着结果字符串包含a和f之间或0和9之间的多个字符。

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

https://stackoverflow.com/questions/13123877

复制
相关文章
使用Python按另一个列表对子列表进行分组
在 Python 中,我们可以使用各种方法按另一个列表对子列表进行分组,例如使用字典和使用 itertools.groupby() 函数,使用嵌套列表推导。在分析大型数据集和数据分类时,按另一个列表对子列表进行分组非常有用。它还用于文本分析和自然语言处理。在本文中,我们将探讨在 Python 中按另一个列表对子列表进行分组的不同方法,并了解它们的实现。
很酷的站长
2023/08/11
6260
使用Python按另一个列表对子列表进行分组
22 - lambda表达式对列表进行排序
如果列表元素是字典类型,如何利用lambda表达式对列表进行升序降序排序? # lambda 表达式只有一行代码,并返回该行代码的结果 a = [ {'name': 'Bill', 'age': '40'}, {'name': 'Mike', 'age': '18'}, {'name': 'Johb', 'age': '28'} ] print(a) print(sorted(a, key=lambda x: x['age'])) a.sort(key=lambda x: x[
ruochen
2021/05/23
1.6K0
22 - lambda表达式对列表进行排序
Python 列表排序
本文最先发布在: https://www.itcoder.tech/posts/python-list-sort/
雪梦科技
2020/06/05
1.8K0
如何对列表进行搜索
logic [31:0] ram_block[1024] = '{default:0}
Lauren的FPGA
2019/10/30
2.9K0
【Python】对字典列表进行去重追加
将M去重后的字典放入列表X中,得到X = [{dict1}, {dict2},{dict3}, {dict4}]
py3study
2020/01/07
2K0
python中列表排序,字典排序,列表中的字典排序
key= lambda dict1:dict1[0] #dict1[0]表示按键,dict1[1]表示按值。
用户8346838
2021/03/10
9.6K0
python 元组列表排序
data = [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
用户5760343
2019/07/07
1.2K0
Java对List列表进行分组处理(对List列表固定分组/对List列表平均分组)
将一组数据平均分成n组 即:数据分组数固定为N,每组数据个数不定,每组个数由List列表数据总长度决定 /** * 将一组数据平均分成n组 * * @param source 要分组的数据源 * @param n 平均分成n组 * @param <T> * @return */ public static <T> List<List<T>> averageAssign(List<T> source, int n) { List<List<T>> result = new Ar
目的地-Destination
2023/03/06
3.6K0
List列表按照对象进行排序
本文介绍了如何根据传入的排序字段,对List列表中的对象进行排序。首先介绍了排序字段及排序规则,然后通过一个实例展示了如何使用该方法,最后给出了通用的排序工具方法。
程序新视界
2018/01/08
1.5K0
python对列表中的字典按[key]时间排序
在翻看之前的一些面试题,发现其中有一个问题就是对列表中的字典按照某个key进行排序,题目是这样的:
the5fire
2019/02/28
5.9K0
【Python】使用 pyecharts 模块绘制动态时间线柱状图 ① ( 列表排序 | 使用 sorted 函数对容器进行排序 | 使用 list.sort 函数对列表进行排序 | 设置排序函数 )
在之前的博客 【Python】数据容器总结 ② ( 数据容器元素排序 | 字符串大小比较 | 字符大小比较 | 长短一样的字符串大小比较 | 长短不一样的字符串大小比较 ) 中 , 介绍了使用 sorted 函数 对容器中的元素进行排序 ;
韩曙亮
2023/10/11
7090
【Python】使用 pyecharts 模块绘制动态时间线柱状图 ① ( 列表排序 | 使用 sorted 函数对容器进行排序 | 使用 list.sort 函数对列表进行排序 | 设置排序函数 )
python 元组的列表排序
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
用户5760343
2019/07/05
1.3K0
Python-排序-02-列表排序
系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3.2
zishendianxia
2019/10/23
5650
python二维列表排序
使用 lambda 关键词辅助对二维列表进行排序,lambda的使用方法参考https://blog.csdn.net/zjuxsl/article/details/79437563
py3study
2020/01/03
2.6K0
python列表基本操作之排序
  Python 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。下面我们来介绍一下python列表的排序操作语法。
jiankang666
2022/06/22
6280
python列表基本操作之排序
Python要如何实现(列表)排序?
排序,是许多编程语言中经常出现的问题。同样的,在Python中,如何是实现排序呢?(以下排序都是基于列表来实现)
全栈程序员站长
2022/09/07
8520
python-进阶教程-对列表中的元素进行筛选
本文主要介绍根据给定条件对列表中的元素进行筛序,剔除异常数据,并介绍列表推导式和生成表达式两种方法。。
kirin
2021/03/11
3.7K0
Python使用递归对任意嵌套列表进行扁平化
首先补充一个地方,之前有个文章演示的是猜数游戏,原文链接为猜数游戏用Python应该这样写,代码中漏掉了一个break语句,也就是说,在猜对的时候输出语句print('Congratulations!')后面应增加一个break,否则会让玩家继续猜,这是不合理的。 下面的今天的内容。 有时候可能会需要这样的功能:把任意深度的嵌套列表扁平化,例如把[1, 2, [3, [4]]]和[1, [2, [3, [4]]]]都变成[1, 2, 3, 4]的形式,由于提前无法确定列表的嵌套深度,这种情况比较适合使用递归
Python小屋屋主
2018/04/16
2.4K0
vue列表排序
一种常见的列表排序方式是使用计算属性。计算属性是Vue.js提供的一种便捷的属性,它根据已有的数据计算出一个新的属性,并将结果缓存起来,只在相关依赖发生改变时才重新计算。通过使用计算属性,可以根据特定的条件对列表数据进行排序。
堕落飞鸟
2023/05/21
9310
点击加载更多

相似问题

Python:对列表进行排序,然后更改另一个列表

44

更改列表中的项,然后对列表进行排序

20

如何对列表进行排序然后对列表子集进行排序

30

根据长度对python列表进行排序,然后根据内容排序

31

Python对列表进行排序

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档