Python按位定义

时间:2017-05-02 01:18:42

标签: python python-3.x

我有一个接受数据的功能'作为参数。作为python的新手,我并不确定这甚至是一种类型。

我注意到在打印那种类型的东西时会是

b'h' 

如果我编码字母h。这对我来说没什么意义。有没有办法在python中定义位,例如1或0.我猜b' h'必须是十六进制?有没有办法让我简单地定义一个8位字符串

bits1 = 10100000

2 个答案:

答案 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个字节,这是标准大小intchar)。

'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表示十进制)定义的基数中表示的二进制序列,而不是使用转义字符。