计算所需的填充大小以具有长度为8的倍数的比特串

  • 本文关键字:填充 计算所 python
  • 更新时间 :
  • 英文 :

def asn1_integer(i):
if  i >= 0:
i = decimal_to_binary(i)
if len(i) < 8:
i = ('0'* (8 - len(i))) + i

我希望i的长度是8的倍数。因此,我需要一个函数,将'0's添加到比特串的开头,相对于8k - len(i) = number_of_additional_bits方程。

p.s.此任务禁止使用binhexstrintbytearraydivmod功能。

decimal_to_binary(i)通过使用逐位运算符将十进制等价物转换为二进制等价物。

计算下一个大于字符串长度的8的倍数很简单。使用divmod将当前长度除以8。如果有余数,那么最后一个字符串的长度需要为(quotient + 1) * 8。如果没有余数,您只需要quotient * 8

i = "11001"
str_len = len(i)
req_len, remainder = divmod(str_len, 8)
if remainder: req_len += 1
req_len *= 8

然后,将字符串填充到req_len:

i = f'{i:>0{req_len}}' # '00011001'

f'...'构造被称为f-string,是一种简单的字符串插值方法。更多信息

最新更新