16 진수 값으로 인쇄하려는 4 바이트 값을 소켓에서 수신합니다. 나는 노력하고있다 :Python에서 Str to hex
print "%08x" % (nonce)
그러나 문자열이 16 진수로 변환 될 수 없다는 오류 메시지가 표시된다. 누구나 아이디어 어떻게 이것을 신속하게 해결할 수 있습니까?
16 진수 값으로 인쇄하려는 4 바이트 값을 소켓에서 수신합니다. 나는 노력하고있다 :Python에서 Str to hex
print "%08x" % (nonce)
그러나 문자열이 16 진수로 변환 될 수 없다는 오류 메시지가 표시된다. 누구나 아이디어 어떻게 이것을 신속하게 해결할 수 있습니까?
struct
모듈을 사용하면 네트워크에서 수신 한 옥텟을 실제 번호로 풀 수 있습니다. %08x
형식은 숫자에 적용됩니다.
import struct
n, = struct.unpack('>I', nonce)
print "%08x" % n
대부분의 경우 바이트가 포함 된 문자열이 있습니다. 그러나 숫자로 인쇄하려면 잘해야합니다. 숫자.
당신은 쉽게 당신이 찾고있는 16 진수 문자열을 만들 수있는이 같은 :
''.join('%02x' % ord(x) for x in nonce)
데모 :
>>> nonce = os.urandom(4)
>>> nonce
'X\x19e\x07'
>>> ''.join('%02x' % ord(x) for x in nonce)
'58196507'
또 다른 옵션은 다음과 같습니다
from binascii import hexlify
>>> hexlify('a1n4')
'61316e34'
num = "9999"
print hex(int(num))
#0x270f
'나는 내 소켓에서 4 바이트 값을받습니다. '-이 코드에는 사용할 수있는 ASCII 숫자 만 포함되어있을 것 같지 않습니다. –
경우 데이터를 문자열로 변환 할 수 있습니다. 그는 str.encode()
방법 :
>>> s = "XYZ"
>>> s.encode('hex')
'58595a'
'넌센스'에는 어떤 가치가 있습니까? – Tim