使用Python将整数转换为二进制
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/14596367/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Using Python to convert integer to binary
提问by A Phototactic Coder
I'm trying to convert integer to binary. This is my work. I don't know how the make a list to show the binary.
我正在尝试将整数转换为二进制。这是我的工作。我不知道如何制作一个列表来显示二进制文件。
num_str = input("Please give me a integer: ")
num_int = int(num_str)
while num_int > 0:
if num_int % 2 == 0:
num_int = int(num_int / 2)
num_remainder = 1
print("The remainder is:", 0)
continue
elif num_int % 2 == 1:
num_int = int(num_int / 2)
num_remainder = 1
print("The remainder is:", 1)
continue
How to make the remainder together?
剩下的怎么拼在一起?
回答by mgilson
Are you aware of the builtin binfunction?
你知道内置bin函数吗?
>>> bin(100)
'0b1100100'
>>> bin(1)
'0b1'
>>> bin(0)
'0b0'
回答by wim
You are on the right track, you just need to save the digits in a variable somewhere instead of just printing them to the screen:
您走在正确的轨道上,您只需要将数字保存在某个地方的变量中,而不仅仅是将它们打印到屏幕上:
num_str = input("Please give me a integer: ")
num_int = int(num_str)
num_bin_reversed = ''
while num_int > 0:
if num_int % 2 == 0:
num_int = int(num_int / 2)
num_remainder = 1
print("The remainder is:", 0)
num_bin_reversed += '0'
elif num_int % 2 == 1:
num_int = int(num_int / 2)
num_remainder = 1
print("The remainder is:", 1)
num_bin_reversed += '1'
num_bin = num_bin_reversed[::-1]
if int(num_str) > 0:
assert '0b' + num_bin == bin(int(num_str))
Now, try to fix it by making it work with negative numbers and 0 too!
现在,尝试通过使其与负数和 0 一起工作来修复它!
回答by Mixstah
#First off yes there is an easier way to convert i.e bin(int) but where is the fun in that
"""First we ask the user to input a number. In Python 3+ raw input is gone
so the variable integer_number will actually be a string"""
integer_number = input('Please input an integer') #get integer whole number off user
"""We could use int(input('Please input an integer')) but we don't want to overload
anyones brains so we show casting instead"""
'''Next we convert the string to an integer value (cast). Unless the user enters text
then the program will crash. You need to put your own error detection in'''
integer_number = int(integer_number)
"""initialise a variable name result and assign it nothing.
This so we can add to it later. You can't add things to a place that doesn't exist"""
result = ''
'''since we are creating an 8bit binary maximum possible number of 255
we set the for loop to 8 (dont forget that x starts at 0'''
for x in range(8):
#The variable in the for loop will increase by 1 each time
#Next we get the modulos of the integer_number and assign it to the variable r
r = integer_number % 2
#then we divide integer number by two and put the value back in integer_value
#we use // instead of / for int division els it will be converted to a float point variable
integer_number = integer_number//2
#Here we append the string value of r which is an integer to result
result += str(r)
#This then loops back to the for loop whilst x<8
#then we assign the reverse of result using [::-1] to result
result = result[::-1]
#print out the result
print(result)
回答by Mixstah
#This is the same code as the one above it's just without comments
#This program takes a number from the user and turns it into an 8bit binary string
integer_number = int(input('Please input an integer'))
result = ''
for x in range(8):
r = integer_number % 2
integer_number = integer_number//2
result += str(r)
result = result[::-1]
print(result)
回答by Will.B
here is a code that works in python 3.3.0 the converts binary to integer and integer to binary, JUST COPY AND PASTE!!!
这是一个适用于 python 3.3.0 的代码,将二进制转换为整数,将整数转换为二进制,只需复制和粘贴!!!
def B2D():
decnum = int(input("Please enter a binary number"), 2)
print(decnum)
welcome()
def D2B():
integer_number = input('Please input an integer')
integer_number = int(integer_number)
result = ''
for x in range(8):
r = integer_number % 2
integer_number = integer_number//2
result += str(r)
result = result[::-1]
print(result)
welcome()
def welcome():
print("*********************************************************")
print ("Welcome to the binary converter program")
print ("What would you like to do?")
print ("Type 1 to convert from denary to binary")
print ("Type 2 to convert from binary to denary")
print ("Type 3 to exit out of this program")
choice = input("")
if choice == '1':
D2B()
elif choice == '2':
B2D()
elif choice == '3':
print("Goodbye")
exit
welcome()
回答by James Henry
You can store the remainders as digits in a string. Here is one possible function to convert from decimal to binary:
您可以将余数存储为字符串中的数字。这是从十进制转换为二进制的一种可能的函数:
def dec2bin(d_num):
assert d_num >= 0, "cannot convert negative number to binary"
if d_num == 0:
return '0'
b_num = ""
while d_num > 0:
b_num = str(d_num%2) + b_num
d_num = d_num//2
return b_num

