python 进制、字符串、字节串之间各种转换

进制转换

(以下默认为python环境 16代表16进制):

  • 十六进制转十进制: int(“0x10”,16) 或者直接输入0x16回车

  • 十进制转十六进制: hex(16)

    int(x, base=10) 函数用于将一个字符串或数字转换为整型。

    oct(x) 函数将一个整数转换成8进制字符串。

    bin(x) 返回一个整数 int 或者长整数 long int 的二进制表示。

整数转字符串
  • 16进制转字符串:

    1
    2
    import binascii
    print binascii.a2b_hex(hexstr) #参数需要是字符串形式 '323648'
  • base64转字符串

    1
    2
    3
    4
    import base64
    print base64.b64decode(base64str)

    str.decode('base64')
字符串转整数
  • 字符串转十六进制

    1
    2
    import binascii
    print binascii.b2a_hex(s.encode('utf-8'))
  • 字符串转base64

    1
    str.encode('base64')
字节串转字符串
  • 字节码解码为字符串

    print bytes(b'\x31\x32\x65').decode('ascii') 或者直接python环境下输入回车即可

base全家桶
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# coding:UTF-8

"""
base64 中包含大写字母(A-Z)、小写字母(a-z)、数字0——9以及+/=;
base32 中只有大写字母(A-Z)和数字234567=
base16编码是一个标准的十六进制字符串(注意是字符串而不是数值),只有数字0-9以及大写字母ABCDEF,更易被人类和计算机使用,因为它并不包含任何控制字符,以及Base64和Base32中的“=”符号
"""

import base64
import binascii
import re

#后期优化:输入各种不同的形式,如字符串,列表等,都可以正确解码

str = '523156615245644E536C564856544E565130354B553064524D6C524E546B4A56535655795645644F5530524857544A4553553943566B644A4D6C524E546C7052523155795645744F536C5248515670555330354452456456576B524854554A585231457956554E4F51305A4855544E4553303153566B64424D6C524A546B7058527A525A5245744F576C5A4854544A5554553554513063304E46524C54564A5652316B795255744F51305A4856544E5554564661566B6C464D6B5252546B70595231557A5245394E516C5A4856544A555355354B566B644E5756524E5455705752316B7A5255564F55305248566B465553564A4356306C4E4D6C524E546B4A565231557952453152556C564A56544A455555354B5530644E5756525054554A56523030795645314F516C5A4857544A4553303143566B64464D305648546B744352314A425645744F576C5A4855544A4651303543566B64564D6B524854554A555230557A52454E4F536C644855544A5554553543566B645A4D6B564A546C4E445231566152456C52576C5A4855544A5553303544516B64564D6C524C54564A55523045795245314F556C4A4856544E455355354B56556C564D6B564E546B70535230315A52457452536C564951544A555455354B565564535156524A54564A575230457956456C4E576C46485454525553303143566B6446576C564A54544A46'

while 1:
try:
print "[info]:"+str
if re.match('^[A-F0-9=]+$', str):
str = base64.b16decode(str)
elif re.match('^[A-Z2-7=]+$',str):
str = base64.b32decode(str)
elif str.find('[a-z+/]'):
str = base64.b64decode(str)

except TypeError:
print "[final] 解码完毕:"+str
break

不定期更新中…

坚持原创技术分享,您的支持将鼓励我继续创作!