可能令您惊讶的是,您看到的问题根本不是问题,因为:
print( type(0b10001100100011000000001) )
# gives: <class 'int'> (or int in Python 2)
0b10001100100011000000001 是一个数字,而不是一个字符串...
所以你可以直接用它进行二进制操作。
试试这个:
print( 0x460001 == 0b10001100000000000000001 ) # gives True
print( 0x460001 == 4587521 ) # gives also True
print( 4587521 == 0b10001100000000000000001 ) # gives True
或者这个:
print( type(0x460001), type(0b10001100000000000000001), type(4587521) )
# gives <class 'int'> <class 'int'> <class 'int'>
不管你怎么写一个数字,它都是同一个数字,但是
print( "0x460001" == 0b10001100000000000000001 ) # gives False
会给你False 因为"0x460001" 是一个字符串而不是一个数字。
无论如何,在你理解以上内容之前,你可以玩弄以下代码sn-ps:
def bitwiseORforBinaryNumbers(bin1, bin2):
return bin( bin1 | bin2 )
print( bitwiseORforBinaryNumbers(
0b10001100000011000000001,
0b10001100100000000000001) )
# 0b10001100100011000000001
或者直接写:
print(
bin( 0b10001100000011000000001 |
0b10001100100000000000001 ) )
# 0b10001100100011000000001
对于具有数字二进制表示形式的字符串,如下所示:
def bitwiseORforStringsWithBinaryValue(binStr1, binStr2):
return bin(int(binStr1,2) | int(binStr2,2))
print( bitwiseORforStringsWithBinaryValue("0b10001100000011000000001", "0b10001100100000000000001") )
# gives:
0b10001100100011000000001
或直接在代码中完成:
print( bin( int("0b10001100000011000000001",2) | int("0b10001100100000000000001",2) ) )