python - 在 Python 中从给定的长十六进制数中获取 8 位数字
问题描述
我在 python 项目的 Visual Studio 上工作,我有这个十六进制数字;
0110200a03
所以,我需要从这个得到 8 位二进制数,我想显示这个十六进制数看起来像这样:
00000001 00010000 00100000 00001011 00000011
它会逐步查看每个数字结尾显示它,例如 0=0000 1=0001 十六进制数字会很长,但它看起来只是一个数字一个数字,所以
我这样写的程序:
def hex_to_words():
print ("Enter 'x' for exit. ");
hexdec = input("Enter any number in Hexadecimal form ");
if hexdec == 'x':
exit();
else:
dec = int(hexdec,16)
print(hexdec + " in Binary = " + bin(dec)[2:]);
hex_to_words()
所以输出二进制看起来像这样:
100010000001000000000101000000011
但是,当我只尝试“01”时,它也会同时计算所有数字,它在输出时只给出“1”,但我想得到“00000001”。
有没有办法做到这一点?
解决方案
只需在其前面添加 0x 即可表示十六进制数
>>> a=0x0110200a03
>>> a
4565502467
>>> bin(a)
'0b100010000001000000000101000000011'
至于你的第二个问题,只需使用格式化功能
>>> a=0x1
>>> bin(a)
'0b1'
>>> a=0x1
>>> '{0:08b}'.format(a)
'00000001'
但这只是将输出格式化为 8 个位置
编辑 这会将数字转换为另一个在其前面填充零的数字,并将该数字的切片转换为 8 块并显示它
from __future__ import print_function
import math
a=0x0110200a03
string=bin(a)[2:]
length=len(string)
resultingnumberlength=int(math.ceil((length)/float(8)))
resultnumber=string.zfill(resultingnumberlength*8)
for binarystring in range(0,len(resultnumber),8):
print(resultnumber[binarystring:binarystring+8],end=" ")
print()
输出
00000001 00010000 00100000 00001010 00000011
推荐阅读
- datastax - Gremlin:如果是,则检查顶点是否存在,然后继续进行进一步的旅行
- yaml-cpp - 如何将带有前导零的数字字符串转储为 yaml-cpp 中的有效 yaml 字符串?
- javascript - 如何在javascript函数的帮助下以交替顺序打印数组元素?
- python - 如何使用python处理内存中的PDF?
- python - 如何将一个数据帧分割成多个,然后在不进行硬编码的情况下将其拼接成一个元组
- python - discord.py 嵌入的 set_image() 函数的奇怪问题
- html - 无法在字符串 'userForm' 上创建属性 'validator' - 使用组件工厂
- java - 键入列表的第一个/第二个/第三个参数
- r - 从数据帧中获取值以循环操作到另一个数据帧
- json - NiFi 中的 JoltTransformJSON 处理器