A-A+

bytes.fromhex() 与 binascii.unhexlify() 有什么区别

2024年05月06日 16:51 学习笔记 暂无评论 共702字 (阅读277 views次)

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】

`bytes.fromhex()` 和 `binascii.unhexlify()` 都是用于将十六进制字符串转换为字节数据的方法,它们的功能相似,但有一些细微的区别。

 

1. `bytes.fromhex()` 是 Python 3 中的内置方法,而 `binascii.unhexlify()` 是 Python 2 和 Python 3 中的 `binascii` 模块提供的函数。因此,如果你的代码需要在 Python 2 和 Python 3 中同时运行,可以选择使用 `binascii.unhexlify()`。

 

2. `bytes.fromhex()` 返回的是字节对象(`bytes` 类型),而 `binascii.unhexlify()` 返回的是字节串(`str` 类型)。在 Python 3 中,这两者的区别不大,因为 Python 3 中的字节对象和字节串本质上是一样的。但在 Python 2 中,字节串与 Unicode 字符串是不同的类型。

 

3. `bytes.fromhex()` 的参数可以是包含空格的十六进制字符串,而 `binascii.unhexlify()` 的参数必须是不包含空格的十六进制字符串。这是因为 `bytes.fromhex()` 在内部会自动去除空格,而 `binascii.unhexlify()` 不会。

 

总的来说,两者在功能上是类似的,但在不同的上下文中可能会选择使用不同的方法。如果你只在 Python 3 中工作,并且想要一种更简洁的方法,可以选择使用 `bytes.fromhex()`;如果你需要在 Python 2 和 Python 3 中兼容,并且希望使用 `binascii.unhexlify()` 来避免潜在的兼容性问题,也是一个不错的选择。

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

给我留言