2017-06-22 48 views
0

在文本文件中有一些utf-8字符,我想處理它們並將它們轉換爲十六進制格式,將它們的十六進制值寫入另一個文件,什麼是最好的如何做到這一點? 我知道wstring,wchar,但他們不能存儲utf-8字符,char16_t和char32_t可以存儲,但他們不支持iostream。一些人建議使用ICU Library,但要求是最好不要使用外部庫。將文件中的utf-8字符轉換爲十六進制

+1

你需要去挖掘和理解UTF-8。要回答你的問題,只需按二進制順序讀取文件並將八位字節轉出 –

回答

1

如果你不想使用外部庫,那麼你基本上有兩種選擇:

您可以使用MultiByteToWideChar如果文件足夠小,以適應在內存中。如果BMP之外有任何代碼點,則必須處理代理對。

如果你知道如何測試和移位一個字節的位,解析自己並不困難。維基百科有一個漂亮的good article提供大部分的細節...

0

我希望它能幫助:
int ascii_to_utf8(unsigned char c, char * out) { int len = 0; char x = 0; if(c < 128) { out[0] = c; len = 1; } else { out[0] = (c >> 6) | 0xC0; out[1] = (c & 0x3F) | 0x80; len = 2; } return len; }

int utf8_to_ascii(unsigned char * c, char * out) { int len = 1; if(*c > 0xC0) { * out = ((c[0] << 6) & 0xC0) | (c[1] & 0x3F); len = 2; } else { * out = * c; } return len; }

相關問題