Tôi đã tìm kiếm nguồn C, nhưng tôi không thể tìm thấy hàm này, và tôi thực sự không muốn viết một bản thân vì nó hoàn toàn phải có.Dịch mã nhị phân Unicode (UTF-8) sang byte
Để xây dựng: Các điểm Unicode được biểu diễn dưới dạng U + ######## - điều này rất dễ nhận, những gì tôi cần, là định dạng ký tự được ghi vào một tệp (ví dụ). Một codepoint Unicode chuyển thành các byte sao cho 7 bit của byte tận cùng bên phải được ghi vào byte đầu tiên, sau đó 6 bit của các bit tiếp theo được ghi vào byte tiếp theo và cứ thế tiếp tục. Emacs chắc chắn biết làm thế nào để làm điều đó, nhưng không có cách nào tôi có thể tìm thấy để có được chuỗi byte của chuỗi mã hóa UTF-8 từ nó như là một chuỗi các byte (mỗi byte chứa 8 bit).
Các chức năng như get-byte
hoặc multybite-char-to-unibyte
chỉ hoạt động với các ký tự có thể được biểu diễn bằng không quá 8 bit. Tôi cần điều tương tự như những gì get-byte
, nhưng đối với các ký tự nhiều byte, do đó thay vì một số nguyên 0..256 tôi sẽ nhận được một vectơ các số nguyên 0..256 hoặc một số nguyên dài 0..2^32.
EDIT
Chỉ trong trường hợp bất cứ ai cũng cần sau này:
(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))))))))