如何在将十六进制值转换为二进制字符串后获得返回值?
我总是得到字符串二进制文件,这对于位操作没用。
即
bin(int(str('0x460001'), 16))
总是0b10001100000000000000001
,而我希望0b10001100000000000000001
作为输出。
对于那个二进制值,我想执行一个需要非字符串值的操作,如:
0b10001100000000000000001 | 0b10001100100000000000001
如果我可以使用任何选项或库,请告诉我。
答案 0 :(得分:1)
你可能会惊讶地发现问题根本不是问题,因为:
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"
是一个字符串而不是一个数字。
无论如何,在您了解上述内容之前,您可以使用以下代码段:
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) ) )