Преобразуйте unicode кодовую точку в шестнадцатеричное число UTF8 в Python

@Blau

Иногда событие происходило за пределами созданных вами виджетов. например (1) Таймер, который увеличивает «Глобальный счетчик», этот счетчик будет отображаться на многих страницах / виджетах (2) Сообщение, отправленное с сервера сокетов, при получении этого сообщения / события пользователь может находиться где угодно (любые страницы / widgets), и вы не знаете, где 'setState' (или виджета фактически нет там, потому что пользователь не на этой странице)

Я построил 2 примера, которые демонстрируют, как использовать Redux для решить проблемы такого рода:

Пример 1: (использовать многопоточный таймер для установки виджета при запуске внешнего события)

https://github.com / lhcdims / statemanagement01

Пример 2: (Используйте Redux для обновления виджета при запуске внешнего события)

https://github.com/lhcdims/statemanagement02 [ 111]

Демонстрационный снимок экрана:

enter image description here

13
задан SilentGhost 15 May 2009 в 10:19
поделиться

4 ответа

Используйте встроенную функцию unichr () для преобразования числа в символ, затем закодируйте это:

>>> unichr(int('fd9b', 16)).encode('utf-8')
'\xef\xb6\x9b'

Это сама строка. Если вам нужна строка в шестнадцатеричном формате ASCII, вам нужно пройти и преобразовать каждый символ c в шестнадцатеричный, используя шестнадцатеричный (ord (c)) или аналогичный.

19
ответ дан 1 December 2019 в 20:57
поделиться
data_from_file='\uFD9B'
unicode(data_from_file,"unicode_escape").encode("utf8")
3
ответ дан 1 December 2019 в 20:57
поделиться
Python 2.6.2 (r262:71600, Apr 16 2009, 09:17:39) 
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> u'\uFD9B'.encode('utf-8')
'\xef\xb6\x9b'
>>> s = 'FD9B'
>>> i = int(s, 16)
>>> i
64923
>>> unichr(i)
u'\ufd9b'
>>> _.encode('utf-8')
'\xef\xb6\x9b'
2
ответ дан 1 December 2019 в 20:57
поделиться

Если длина входной строки кратна 4 (т.е. ваши кодовые точки Юникода UCS-2), затем попробуйте следующее:

import struct

def unihex2utf8hex(arg):
    count= len(arg)//4
    uniarr= struct.unpack('!%dH' % count, arg.decode('hex'))
    return u''.join(map(unichr, uniarr)).encode('utf-8').encode('hex')

>>> unihex2utf8hex('fd9b')
'efb69b'
1
ответ дан 1 December 2019 в 20:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: