python - 如何在多个部分中剪切列表或显示
问题描述
我正在 python 中创建一个函数,应该将 Decimal(10) 转换为 Binary(2);
因为它应该显示在小屏幕(计算器)上,所以我想将输出字节拆分为每个字节(8 x 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
以达到您想要的结果。在打印之前修改您的代码:
bin = "".join(bin)
bin = "\n".join([bin[i:i+8] for i in range(0, len(bin), 8)])
print(dec2, "=", bin)
这会给你:
259 = 00000001
00000011
这背后的逻辑是什么?
在第一行中,您用于join
创建一个包含所有二进制数字的字符串,由空格字符分隔。这意味着对于每 8 位,中间有 8 个空 7 个空字符,总共形成 15 个字符,在切片 bin 时需要考虑。因此,我使用 16 对每 15 个字符进行切片并得到你想要的结果。
我建议您更改bin = " ".join(bin)
为,bin = "".join(bin)
以便分隔符为空字符串,并每隔 8 个字符拆分一次列表,这对您来说是正常且更具可读性的。随意问其他任何事情。
推荐阅读
- osgi - Sling 脚本助手返回空服务
- java - java socket传输数据的分类
- python - 如何检查文件中是否有重复的单词
- embedded-database - 什么时候应该使用 RocksDB 或 LevelDB
- xamarin.forms - 如何使用 xamarin 表单中的十六进制值以编程方式更改汉堡菜单图标的颜色?
- operating-system - 为什么在上下文切换之前禁用中断
- python - 未找到“api”的反向。'api' 不是带有休息框架的有效视图函数或模式名称
- sql - SQL 内连接和 where 性能比较
- arrays - 是否有任何概念可以在 C/Java 中不使用 10 个“for 循环”的情况下处理多维数组(例如 10 维数组)?
- vba - 用图片改变段落的样式