#python #python-3.x #hex #slice
Вопрос:
Нужна помощь с кусочком гекса, чтобы повернуть вспять
У меня есть
b = str(valueh)
c = str(valueh)[-1:1:-1]
if all(x in string.hexdigits for x in c):
d = int(c, 16)
print(hex(d))
например, для значения os 0x123456 это печатает 0x654321, и мне нужно, чтобы оно печатало 0x563412.
Кто-нибудь может мне помочь?
Комментарии:
1.
a = 0x123456; b = int.from_bytes(a.to_bytes(a.bit_length() // 8 1, "big"), "little")
2. привет, спасибо, но это возвращает 5649426
3. … что является десятичной формой числа. Попробуйте
hex(5649426)
😉4. ХА-ХА-ха, потрясающе 🙂 спасибо
5. a=int(значение, база=16)
Ответ №1:
Этот код допускает строки с префиксом 0x или без него, а также строки с нечетным числом символов:-
def rev(s):
if not s:
return s
if (prefix := s[0:2] if s.lower().startswith('0x') else ''):
sl = list(s[2:])
else:
sl = list(s)
if (j := len(sl) - 2) >= 2:
i = 0
while True:
sl[i:i 2], sl[j:j 2] = sl[j:j 2], sl[i:i 2]
if (i := i 2) >= (j := j - 2):
break
return prefix ''.join(sl)
print(rev('0x123456'))