【问题标题】:Concatenate numbers in binary [duplicate]以二进制连接数字[重复]
【发布时间】:2017-01-13 18:22:39
【问题描述】:

在 Python 中将数字转换为二进制时,您会得到以下结果:

b = bin(77)
print(b)  # 0b1001101

当我期待01001101。我猜b 是为了让 Python 知道这是一个二进制数而不是某个整数。 在 Python 中 没问题,但是如果您想与外界交流,这里的安全做法是什么? 这可能是一个愚蠢的例子,但在线转换器无法识别上述二进制文件

简单地删除b 总能解决问题吗?因为我似乎在尝试对发生二进制数连接的 Ascii85 编码器/解码器进行编码时遇到了问题。你可以看看这个例子here

我的代码在这种情况下会产生以下结果:

ch = 'Man '
list_ = [ord(x) for x in ch]  # [77, 97, 110, 32]
binary_repr = ''.join(bin(x) for x in list_)  # 0b10011010b11000010b11011100b100000
# When it should be                                01001101011000010110111000100000

请注意,简单地用空替换b 并不能完全消除它。这可能是一些愚蠢的错误,但有人可以为我解决问题吗?

【问题讨论】:

  • 不,修剪前两个字符就可以了。
  • @ŁukaszRogalski 但修剪前 2 个字符会产生 7 位数字。怎么可能?
  • @Ev.Kounis bin 不关心字节,它只生成代表数字的最短位串。 bin(1) -> 0b1Some history of 0b
  • @PatrickHaugh 我明白了。谢谢大家!

标签: python


【解决方案1】:
>>> format(b, '08b') 

b 是你的号码,'08b' 是你想用来表示你的号码的位数,如果参数是#08b 而不是 08b,你会得到数字前面的 0b。

在每次进一步的操作中使用格式,你应该会很好!

【讨论】:

  • 或:print "{0:b}".format(77)
  • @alfasin 我也更喜欢这种方式。
  • 你说得对,我忘记了,只是回答了我脑海中出现的第一个解决方案,我已经很久没有使用phyton tbh了
【解决方案2】:

没有

str(b)[2:] 

做这份工作吗?

但你可能会更好:

"{0:b}".format(77)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 2023-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多