我在python中创建一个函数,用来将十进制(10)转换为二进制(2)
因为它应该显示在小屏幕(计算器)上,所以我想按字节(8乘8)分割输出字节。现在,我使用一个转换成字符串的列表来水平显示结果。你知道吗
我试过垂直显示,每8个字符暂停一次。(它工作,但我想有一个水平显示)
还试图显示列表并每8个字符清除一次,但没有成功。你知道吗
def dectobin(dec):
maxbin = 7
maxdec = 2**maxbin
dec2 = dec
bin = []
#Define default maximum values
#for the Binary and Decimal numbers
#starting from one Byte
dec = abs(dec)
#Negative value to positive value
while dec > maxdec:
maxbin = maxbin+8
maxdec = 2**maxbin
#Define the actual maximum values
#for the Binary and Decimal numbers
#incremented in Bytes
while maxbin != -1:
#Set the loop to stop at final bit
b = dec-2**maxbin
#Saving dec into another var
#in order to do the tests
if b < 0:
bin.append("0")
#If dec < maxbin value, it's a 0
else:
bin.append("1")
#If dec > maxbin value, it's a 1
dec=b
maxbin = maxbin-1
#Decrease the bit
bin = " ".join(bin)
print(dec2, "=", bin)
例如,如果我输入“259”,我希望
259 = 00000001
00000011
而不是
259 = 0000000100000011
您可以切片
bin
以获得所需的结果。在打印之前修改代码:这将为您提供:
这背后的逻辑是什么?你知道吗
在第一行中,您使用
join
创建一个包含所有二进制数字的字符串,用空格字符分隔。这意味着每8位之间就有8个空字符和7个空字符,这总共是15个字符,在切片时需要考虑这些字符。因此,我使用16来每15个字符切片一次,得到你想要的结果。你知道吗我建议您将
bin = " ".join(bin)
改为bin = "".join(bin)
,这样分隔符将是一个空字符串,并且每8个字符分割一次列表,这对您来说是正常的,而且可读性更好。随便问别的。你知道吗相关问题 更多 >
编程相关推荐