C kaynakları aramaya kadar gittim, ancak bu işlevi bulamıyorum ve kesinlikle bir tane yazmak istemiyorum çünkü kesinlikle orada olması gerekir.Unicode (UTF-8) kod noktasını baytlara çevir
Ayrıntı yapmak için: Unicode noktaları U + ######## olarak gösterilmektedir - bu ne kolaydır, ihtiyacım olan şey karakterin bir dosyaya yazılması biçimidir (örneğin). Bir Unicode kod noktası, baytları en sağdaki baytın 7 biti ilk bayta yazacak şekilde çevirir, sonra sonraki bitlerin 6 biti bir sonraki bayt ve benzerlerine yazılır. Emacs kesinlikle nasıl yapılacağını bilir, ancak bayt dizisinden (her biri 8 bit içeren) bayt dizisi UTF-8 kodlanmış dizesini elde etmenin bir yolu yoktur.
get-byte
veya multybite-char-to-unibyte
gibi işlevler, yalnızca 8 bit kullanılmadan gösterilebilen karakterlerle çalışır. get-byte
'un aynı şeylere ihtiyacım var, ancak çok baytlı karakterler için, tamsayı 0..256 yerine tamsayı 0..256 veya tek uzun tamsayı 0..2^32 olsun.
DÜZENLEME herkes bu daha sonra ihtiyacınız olacak Ne olur ne
:
(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))))))))