Передайте символ Unicode в ord()
, чтобы получить его кодовую точку, а затем разбейте эту кодовую точку на отдельные байты с помощью int.to_bytes()
, а затем отформатируйте вывод так, как вы хотите:
list(map(lambda b: hex(b)[2:], ord('\u4132').to_bytes(4, 'big')))
возвращает: ['0', '0', '41', '32']
list(map(lambda b: hex(b)[2:], ord('\N{PILE OF POO}').to_bytes(4, 'big')))
возвращает: ['0', '1', 'f4', 'a9']
Как я уже упоминал в другом комментарии, кодирование кодовой точки в utf16 не будет работать должным образом для кодовых точек вне BMP (базовой многоязычной плоскости), поскольку UTF16 потребуется суррогатная пара для кодирования этих кодовых точек.