pyusb를 사용하여 USB를 통해받은 정수 값 배열을 16 진수 값 목록으로 변환하고 싶습니다. 이 16 진수 값에 항상 2 바이트 (예 : 0x ##)를 사용하고 싶습니다. 그러나 정상적인 16 진수() 함수는 입력 1과 함께 0x1을 반환합니다. 나는 0x01을 반환하고 싶습니다.정수를 16 진수로 변환하여 항상 2 바이트를 출력합니다.
그런 다음 '0x'부분을 버리는 동안 함께 16 진수 값 목록을 추가하고 싶습니다. 이것은 내가 현재 가지고있는, 아주 간단합니다.
data_read = dev.read(0x82,64,0,1000)
hex_data = range(0,len(data_read))
for i in range(0,len(data_read)):
hex_data[i] = hex(data_read[i])
아이디어가 있으십니까? 나는 그것을 어색하게 할 수는 있지만 그럴 수있는 방법은 없지만, 올바른 방법이 있기를 바랬다. 고맙습니다.
업데이트 : 결과 16 진수 값이 기술적으로 내 코드에서 문자열 때부터 Lavon에 의해 제안
data_read = dev.read(0x82,64)
print data_read
>>> array('B', [169, 86, 128, 1, 0, 128])
for i in range(0,len(data_read)):
hex_data[i] = hex(data_read[i])
print hex_data
>>> ['0xa9', '0x56', '0x80', '0x1', '0x0', '0x80']
방법은 작동하지 않았다? 대신에 저는 루프 전체를 16 진수로 변환하기 위해 건너 뛰었습니다. Lavon과 moooeeeep가 제안 했으므로 직접 실행했습니다! 감사!
hex_data = ('%02x' %i for i in data_read)
print ''.join(hex_data)
>>> a95680010080
구문에 사용할 좋은 참조가 있습니까? 즉 '% 02x'를 사용하셨습니까? 나는 그것을 전에 보지 않고 그것을 더 잘 이해하고 싶다.
을 할 그냥 다른 방법 : @moooeeeep에 의해 제안
또한, 여기에 발전기를 사용하는 솔루션입니다 그것들은 바이트가 아닙니다. 그것들은 [nibbles] (http://en.wikipedia.org/wiki/Nibble)입니다. – senderle
'dev.read (0x82,64,0,1000)'에는 모두 16 진수 값 또는 '0x'를 선두로하는 값만 있습니까? –
@senderle yeah brain fart there, late day – raymond