python进制转换编程(python编程进制转化)

http://www.itjxue.com  2023-04-14 17:11  来源:未知  点击次数: 

自学Python:十进制转二进制程序

我们日常使用的是十进制的数,而计算机都是0101这样的二进制数,如果知道十进制数对应的二进制数是多少,可以设计一个程序。

def sto2(d):

? ? if d == 0:

? ? ? ? return '0' #处理输入的是0的情况游启首

? ? sign = ''

? ? if d 0:

? ? ? ? d = -d

? ? ? ? sign = '-'#转换输入的是负数的情况

? ?旁姿 b = ''

? ? while d != 0:

? ? ? ? b = str(d % 2) + b

? ? ? ? d = d // 2

? ? return sign + b

d = int(input('要转换的十进制数是:'))

print('对应的二进制结果为'+sto2(d))

执行测试一下神数:

要转换的十进制数是:28

对应的二进制结果为11100

要转换的十进制数是:-66

对应的二进制结果为-1000010

_______________END______________

关于python如何实现各进制转换的总结大全

ctf经常遇到进制转换的问题,就正好做一个进制转换总结,分享出来供大家参考学习,下面来一起看看详细的介绍:

字符串与十六进制转换

例如百度ctf 12月的第二盯穗运场第一个misc

?

1

666C61677B65633862326565302D336165392D346332312D613031322D3038616135666137626536377D

比较简单的一种做法就是直接调用字符串的.decode('hex')解密即可, 但如果不用这个函数你会怎么解呢?

一种思路就是先2个分组,解出每组的ascii值,合并下字符串即可得到,具体代码如下

?

1234567

import res='666C61677B65633862326565302D336165392D346332312D613031322D3038616135666137626536377D's = re.findall(r'.{2}',s)s = map(lambda x:chr(int(x,16)),s)print ''.join(s)flag{ec8b2ee0-3ae9-4c21-a012-08aa5fa7be67}

前面说了字符串的decode('hex')函数,另外还有两个转16进制的函数,这里都总结一下

内置函数hex()

只能转换10进制整数为十六进制,不能转字符串

binascii库的hexlify()和b2a_hex()

这两个函数的功能是将字符串转换成十六进制,对应的解密函数分别为 unhexlify()和a2b_hex()

进制互族茄转

二进制,八进制,十六进制转10进制比较简单,直接调用

int函数

?

1

int(str,base) //返回凯梁十进制整数,但注意此时第一个参数为字符串

对应的解密函数分别是

?

12345

bin() //10进制转二进制 oct() //十进制转八进制 hex() //十进制转十六进制

但二进制直接转16进制就需要多走一步了,先用int转十进制,在用上面提到的hex()函数将十进制转换成十六进制,比较精简的写法是

?

1

map(lambda x:hex(int(x,2)),['0011']) //lambda表达式

或者是

?

1

[hex(int(x,2)) for x in ['0011']] //列表解析

对应的解密函数就是

?

1

map(lambda x:bin(int(x,16)),['ef'])

最后在附上自己用python写的一个进制转换小工具,主要功能是对一组二进制,或者ascii,或十六进制转换成字符串,想必ctf上也经常会遇到这类题型吧

?

1234567891011121314151617181920212223242526272829303132333435363738394041424344

# make by 江sir#coding:utf-8import reimport argparse def bintostr(text): text = text.replace(' ','') text = re.findall(r'.{8}',text) s = map(lambda x:chr(int(x,2)),text) #批量二进制转十进制 flag = ''.join(s) return flag def asciitostr(text): if ' ' in text: text = text.split(' ') elif ',' in text: text = text.split(',') s = map(lambda x:chr(int(x)),text) flag = ''.join(s) return flag def hextostr(text): text = re.findall(r'.{2}',text) #print text s = map(lambda x:chr(int(x,16)),text) #print s flag = ''.join(s) return flag if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument("-b") parser.add_argument("-a") parser.add_argument("-x") argv = parser.parse_args() #print argv if argv.b: res = bintostr(argv.b) elif argv.a: res = asciitostr(argv.a) elif argv.x: res = hextostr(argv.x) print res

用法:

十六进制转字符串:

666C61677B65633862326565302D336165392D346332312D613031322D3038616135666137626536377D

?

12

bintostr.py -x "666C61677B65633862326565302D336165392D346332312D613031322D3038616135666137626536377D"flag{ec8b2ee0-3ae9-4c21-a012-08aa5fa7be67}

二进制转字符串:

可以有空格,也可以无空格

00101111 01100110 00110110 00110111 00110011 00110010 00110100 00110001 00110000 01100001 01100001 01100100 01100011 00110000 00110011 00110111 01100110 01100010 00110000 01100011 01100010 01100001 01100001 00110000 00110000 01100011 00110111 00110101 00110011 00110001 00110011 00110111 00110011 00101110 01110100 01111000 01110100

?

12

bintostr.py -b "00101111 01100110 00110110 00110111 00110011 00110010 00110100 00110001 00110000 01100001 01100001 01100100 01100011 00110000 00110011 00110111 01100110 01100010 00110000 01100011 01100010 01100001 01100001 00110000 00110000 01100011 00110111 00110101 00110011 00110001 00110011 00110111 00110011 00101110 01110100 01111000 01110100"/f6732410aadc037fb0cbaa00c7531373.txt

ascii转字符串

可以是空格分隔,也可以是,分隔

s='45 46 45 46 32 45 32 46 46 45 46 32 46 45 46 46 32 46 46 46 32 45 46 46 46 32 46 46 45 45 46 45 32 45 46 46 46 32 46 46 46 32 46 45 46 46 32'

?

12

bintostr.py -a "45 46 45 46 32 45 32 46 46 45 46 32 46 45 46 46 32 46 46 46 32 45 46 46 46 32 46 46 45 45 46 45 32 45 46 46 46 32 46 46 46 32 46 45 46 46 32"-.-. - ..-. .-.. ... -... ..--.- -... ... .-..

以上实例均来自某些ctf赛题

总结

python十进制转二进制代码(不用内置函数,使用if,else for,in,while)?

n = int(input('请输入要转换进制核旦衫的数值:'))

b = []

while True: # 一直循环,商为0时利用break退出循环

s = n // 2 # 商

y = n % 2 # 余改腔数

b = b + [y] # 每一个余数存迟没储到b中

print b

if s == 0:

break # 余数为0时结束循环

n = s

b.reverse() # 使b中的元素反向排列

b = [ str(i) for i in b ]

b = ['0b'] + b

print ('该数字转换为二进制后是:')

print ''.join(b)

python其他进制转换成十进制代码

代码为,print(int("x",y))。表示把y进制的x转换成十进制数并输出结果羡高。Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计者败具有很强的可读性,相比其他语言经常使用英文关首派颤键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

python中二进制数10101转为十进制数的表达式是什么?

在Python中锋隐族,可以使用int()函数将二进制数10101转换为十进制数。int()函数的第一个参数为要转换的数,第二个参数为进制携肆。例如,要将二进制数10101转换为十进制数,可以使用以下表达式:

int('10101', 2)

该表达式会将二进制数10101转换为十进制数银弊21。

如何用Python将十进制数字转为二进制,以及将二进制转为十六进制?

1、将十进制转换成二进制,利用bin()方法。

2、获取亏迹二进制数据的长度袭铅。

3、to_bytes(),byteorder为little (2048).to_bytes(2,byteorder='little');b'\x00\x08'。

4、使用to_bytes()方法,byteorder为big。

5、添加signed=True属性 (-10240).to_bytes(10,byteorder='拍空好little',signed=True);。

6、利用bit_length()方法 A3=45125656; A3.to_bytes((A3.bit_length()+7) // 8,byteorder='big');。就完成了。

(责任编辑:IT教学网)

更多