In order to convert an integer to a binary, I have used this code :
>>> bin(6) '0b110'
and when to erase the ‘0b’, I use this :
>>> bin(6)[2:] '110'
What can I do if I want to show 6 as 00000110 instead of 110?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
>>> '{0:08b}'.format(6)
'00000110'
Just to explain the parts of the formatting string:
{}places a variable into a string0takes the variable at argument position 0:adds formatting options for this variable (otherwise it would represent decimal6)08formats the number to eight digits zero-padded on the leftbconverts the number to its binary representation
If you’re using a version of Python 3.6 or above, you can also use f-strings:
>>> f'{6:08b}'
'00000110'
Method 2
Just another idea:
>>> bin(6)[2:].zfill(8) '00000110'
Shorter way via string interpolation (Python 3.6+):
>>> f'{6:08b}'
'00000110'
Method 3
A bit twiddling method…
>>> bin8 = lambda x : ''.join(reversed( [str((x >> i) & 1) for i in range(8)] ) ) >>> bin8(6) '00000110' >>> bin8(-3) '11111101'
Method 4
Just use the format function
format(6, "08b")
The general form is
format(<the_integer>, "<0><width_of_string><format_specifier>")
Method 5
eumiro’s answer is better, however I’m just posting this for variety:
>>> "%08d" % int(bin(6)[2:]) 00000110
Method 6
numpy.binary_repr(num, width=None) has a magic width argument
Relevant examples from the documentation linked above:
>>> np.binary_repr(3, width=4) '0011'The two’s complement is returned when the input number is negative and width is specified:
>>> np.binary_repr(-3, width=5) '11101'
Method 7
.. or if you’re not sure it should always be 8 digits, you can pass it as a parameter:
>>> '%0*d' % (8, int(bin(6)[2:])) '00000110'
Method 8
Going Old School always works
def intoBinary(number):
binarynumber=""
if (number!=0):
while (number>=1):
if (number %2==0):
binarynumber=binarynumber+"0"
number=number/2
else:
binarynumber=binarynumber+"1"
number=(number-1)/2
else:
binarynumber="0"
return "".join(reversed(binarynumber))
Method 9
The best way is to specify the format.
format(a, 'b')
returns the binary value of a in string format.
To convert a binary string back to integer, use
int() function.
int('110', 2)
returns integer value of binary string.
Method 10
Assuming you want to parse the number of digits used to represent from a variable which is not always constant, a good way will be to use numpy.binary.
could be useful when you apply binary to power sets
import numpy as np np.binary_repr(6, width=8)
Method 11
('0' * 7 + bin(6)[2:])[-8:]
or
right_side = bin(6)[2:] '0' * ( 8 - len( right_side )) + right_side
Method 12
You can use just:
"{0:b}".format(n)
In my opinion this is the easiest way!
Method 13
even an easier way
my_num = 6
print(f'{my_num:b}')
Method 14
def int_to_bin(num, fill):
bin_result = ''
def int_to_binary(number):
nonlocal bin_result
if number > 1:
int_to_binary(number // 2)
bin_result = bin_result + str(number % 2)
int_to_binary(num)
return bin_result.zfill(fill)
Method 15
The python package Binary Fractions has a full implementation of binaries as well as binary fractions. You can do your operation as follows:
from binary_fractions import Binary b = Binary(6) # creates a binary fraction string b.lfill(8) # fills to length 8
This package has many other methods for manipulating binary strings with full precision.
Method 16
Simple code with recursion:
def bin(n,number=('')):
if n==0:
return(number)
else:
number=str(n%2)+number
n=n//2
return bin(n,number)
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0