저는 파이썬에서 새롭습니다. 이 결과를 가지고 모든 이들의 각 1에파이썬에서 bytearrays를 어떻게 추가 할 수 있습니까?
a=bytearray('\x31\xcb\x50\x69').
내가 뭘해야 할 것은 : 나는 쉘 코드의 ByteArray의이 내가 년을 달성 할 수있는 방법
bytearray('\x32\xcc\x51\x6a').
어떤 좋은 아이디어 파이썬?
, 당신과 안부 감사저는 파이썬에서 새롭습니다. 이 결과를 가지고 모든 이들의 각 1에파이썬에서 bytearrays를 어떻게 추가 할 수 있습니까?
a=bytearray('\x31\xcb\x50\x69').
내가 뭘해야 할 것은 : 나는 쉘 코드의 ByteArray의이 내가 년을 달성 할 수있는 방법
bytearray('\x32\xcc\x51\x6a').
어떤 좋은 아이디어 파이썬?
, 당신과 안부 감사a = bytearray('\x31\xcb\x50\x69')
a = bytearray(b + 1 if b < 255 else 0 for b in a)
변경 0
당신이 제로로 다시 돌아 wrappping보다는 값을 클립하려면 255
합니다.
이 결과는 다음과 같습니다. "2 Qj" 왜 이런 일이 발생 했습니까? –
이들은 바이트 배열의 문자로 해석되는 바이트입니다. 원래의 가치를 시험 해보면 비슷한 결과를 얻을 수 있습니다. – kindall
>>> a=bytearray('\x31\xcb\x50\x69')
>>> a
bytearray(b'1\xcbPi') # repr uses a different but equivalent representation
>>> bytearray(x + 1 for x in a)
bytearray(b'2\xccQj')
당신은 그것을 예를 들어
0xff
에 하나에 의미를 고려할 필요가
bytearray((x + 1) % 0xff for x in a) # wrap around
또는
bytearray(min(x + 1), 0xff) for x in a) # limit to 0xff
그것은 경우 translate
방법을 사용하는 것이 아마 더 빠릅니다 당신은 이들 중 몇 가지를하고 있습니다
>>> trans_table = bytearray(range(1, 256)) + '\x00'
>>> a.translate(trans_table)
bytearray(b'2\xccQj')
당신이 같이 할 수있는 배열을 인쇄하려면은 repr()
기능을 사용
>>> print a
1�Pi
>>> print repr(a)
bytearray(b'1\xcbPi')
'번역'을위한 만세. – kindall
답변 해 주셔서 감사합니다. 내가 뭘 잘못했는지 모르겠습니다. 나는 모든 솔루션 제공 업체를 시도했는데 그들 모두 이상한 결과를 냈습니다 : 1 P 또는 2 Q ....? –
@Dionka, 콘솔을 인쇄 할 때 bytearray를 나타내는 방법입니다. 'print'는 bytearray에'__str__'을 호출합니다. 'repr'을 사용하면 여기에 표시된 표현을 얻을 수 있습니다. –
:
a=bytearray('\x31\xcb\x50\x69')
new_a = bytearray(b + 1 for b in a)
for b in new_a:
print('{:02x}'.format(b))
출력 :
32
cc
51
6a
바이트 중 하나가 '0xff'이면 어떻게 될까요? – kindall
음, 절차는 되돌릴 수 있어야합니다. 그래서 랩 어라운드가 필요합니다. 역전 시키면 0xff로 돌아갈 수 있습니다. –