Fui tan lejos como buscar fuentes C, pero no puedo encontrar esta función, y realmente no quiero escribir una porque realmente debe estar allí.Traducir punto de código Unicode (UTF-8) a bytes
Elaborar: Los puntos Unicode se representan como U + ######## - esto es fácil de obtener, lo que necesito, es el formato en que se escribe el carácter en un archivo (por ejemplo). Un punto de código Unicode se traduce a bytes de modo que 7 bits del byte más a la derecha se escriben en el primer byte, luego 6 bits de los siguientes bits se escriben en el siguiente byte, y así sucesivamente. Emacs ciertamente sabe cómo hacerlo, pero no hay forma de que pueda encontrar la secuencia de bytes de la secuencia codificada en UTF-8 como una secuencia de bytes (cada uno con 8 bits).
Las funciones como get-byte
o multybite-char-to-unibyte
funcionan solo con caracteres que pueden representarse utilizando no más de 8 bits. Necesito lo mismo que get-byte
, pero para caracteres multibyte, de modo que en lugar de un número entero 0..256 recibiría un vector de números enteros 0..256 o un único entero largo 0..2^32.
EDITAR
Sólo en caso de que alguien lo necesitará más adelante:
(defun haxe-string-to-x-string (s)
(with-output-to-string
(let (current parts)
(dotimes (i (length s))
(if (> 0 (multibyte-char-to-unibyte (aref s i)))
(progn
(setq current (encode-coding-string
(char-to-string (aref s i)) 'utf-8))
(dotimes (j (length current))
(princ (format "\\x%02x" (aref current j)))))
(princ (format "\\x%02x" (aref s i))))))))