Python常见编码转化

这篇博客主要总结了Python中常见的编码转换,包括16进制转字符串、10进制和16进制间的转化,以及libnum模块的使用。通过binascii模块的hexlify()和unhexlify()函数,以及int()和hex()方法实现不同进制间的转换。此外,还提及了libnum模块在处理长整型数字时的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

最近在做题遇到一些很捉鸡的事情,在编码转化上卡了很久,因此特就常见的编码做一个总结。
python中比较常见的两个编码转化模块binascii和libnum

一、16进制转化为字符串

import binascii
from libnum import n2s,s2n

还是由繁到简的顺序来说一下。
binascii模块中常用的binascii.hexlify()和binascii.unhexlify() 16进制和字符串之间的相互转化,其实就是ASCII的转化

flag="test"
print binascii.hexlify(flag) #74657374

但是将16进制转化为字符串时要注意,不能直接

hflag=74657374
print binascii.unhexlify(hflag)  #错误示例

binascii.unhexlify()接受的是一个16的字符串。

hflag=74657374
print binascii.unhexlify(str(hflag)) #test

如果不使用binascii模块也可以。

flag="test"
print flag.encode("hex") #74657374
print hflag="74657374".decode("hex") #test

使用字符串内嵌的函数也可以进行转化。
如果需要进行整数的转化,则必须先将整数转化为16进制后才可以

二、10进制16进制转化

print int("74657374",16) #1952805748
print hex(1952805748)    #0x74657374

int()可以将字符串用base进制解析,转化为10进制整数
hex()将整数转化为16进制
字符串和整形可以使用str()和int()进行快速的变化

三、libnum模块的使用

如果我们已知一串10进制数字

iflag=1952805748
print n2s(iflag) #test
print s2n("test")#1952805748

如果这时非要使用binascii模块就会比较麻烦

print binascii.unhexlify(hex(iflag)[2:]) #test

如果iflag长度很长那么需要使用[2:-1]进行分片

总结

反正平时多去练,编码转化的方式有很多,找一种合适自己习惯的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值