我有一个接受数据的功能'作为参数。作为python的新手,我并不确定这甚至是一种类型。
我注意到在打印那种类型的东西时会是
b'h'
如果我编码字母h。这对我来说没什么意义。有没有办法在python中定义位,例如1或0.我猜b' h'必须是十六进制?有没有办法让我简单地定义一个8位字符串
bits1 = 10100000
答案 0 :(得分:3)
你正在混淆一些无关的事情。
首先,(在Python 3中),前缀为b
的带引号的文字属于bytes
类型 - 这意味着一串原始字节值。例如:
x = b'abc'
print(type(x)) # will output `<class 'bytes'>`
这与str
类型形成对比,后者是(Unicode)字符串。
整数文字可以使用0b
前缀以二进制表示,例如
y = 0b10100000
print(y) # Will output 160
答案 1 :(得分:0)
据我所知,'数据'不是一种类型。您的函数(可能)接受您传递给它的任何内容,无论其类型如何。
现在,b'h'
表示“二进制序列映射到char''的数字(int)”,这不是十六进制,而是一个可能为8位的数字(1个字节,这是标准大小int
和char
)。
'h'的ASCII码是104(十进制),用二进制写成b'\ b01101000',或用hexa b'\ x68'。
所以,这是我认为你正在寻找的答案:如果你想从其二进制表示中编码一个8位的int,只需输入b'\b01101000'
(对于104)。我建议改用hexa,使其更加紧凑和易读。在hexa中,每四位构成一个从0到f的符号,并且符号可以每四位连接一次以形成一个更大的数字。因此位序列01101000写为b'\ b0110 \ b1000'或b'\ x6 \ x8',可写为b'\ x68'。前面的b,在引号之前告诉python将字符串解释为在\ b或\ x(或\ d表示十进制)定义的基数中表示的二进制序列,而不是使用转义字符。