# textcodec **Repository Path**: jhembed/textcodec ## Basic Information - **Project Name**: textcodec - **Description**: utf8和gbk码相互转换的C/C++实现。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 11 - **Forks**: 11 - **Created**: 2022-12-07 - **Last Updated**: 2025-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # unigbk_exchange **双字节UNICODE和GBK相互转换,运行结果如下:** ```bash ------ byte array in UTF8 format: 0xE4,0xBD,0xA0,0xE5,0xA5,0xBD,0x41,0x42,0x43,0xE4,0xB8,0x96,0xE7,0x95,0x8C, ------ utf8 to unicode : 0x60,0x4F,0x7D,0x59,0x41,0x00,0x42,0x00,0x43,0x00,0x16,0x4E,0x4C,0x75, ------ utf8 to gbk : 0xC4,0xE3,0xBA,0xC3,0x41,0x42,0x43,0xCA,0xC0,0xBD,0xE7, ------ gbk to unicode : 0x60,0x4F,0x7D,0x59,0x41,0x00,0x42,0x00,0x43,0x00,0x16,0x4E,0x4C,0x75, ------ gbk to utf8 : 0xE4,0xBD,0xA0,0xE5,0xA5,0xBD,0x41,0x42,0x43,0xE4,0xB8,0x96,0xE7,0x95,0x8C, ------ unicode to utf8 : 0xE4,0xBD,0xA0,0xE5,0xA5,0xBD,0x41,0x42,0x43,0xE4,0xB8,0x96,0xE7,0x95,0x8C, ------ unicode to gbk : 0xC4,0xE3,0xBA,0xC3,0x41,0x42,0x43,0xCA,0xC0,0xBD,0xE7, ------ HEX TO STR: AABBCC ------ STR TO HEX: 0xAA,0xBB,0xCC ``` **API使用如下:** ```c /** * 十六进制面值转字符串,例:{0XAA,0XBB,0XCC} -> "AABBCC" * @param from 待转换的十六进制数据 * @param fromSize 待转换的十六进制数据大小 * @param to 存放转换的字符串 * @param toSize 存放转换的字符串的大小 */ void HexToStr(const uint8_t* from, uint32_t fromSize, char* to, uint32_t* toSize); /** * 十六进制字符串转数值,例:"AABBCC" -> {0XCC,0XBB,0XAA} * @param from 待转换的十六进制字符串 * @param fromSize 字符串长度 * @param to 存放字符串的十六进制值 * @param toSize 存放字符串的十六进制值的大小 */ void StrToHex(const char* from, uint32_t fromSize, uint8_t* to, uint32_t* toSize); /** * @brief GBK码转UTF8码 * @param from GBK码 * @param fromSize GBK码的大小 * @param to UTF8码 * @param toSize UTF8码的大小 */ void GBKToUTF8(const uint8_t* from, uint32_t fromSize, uint8_t* to, uint32_t* toSize); /** * @brief UTF8码转GBK码 * @param from UTF8码 * @param fromSize UTF8码的大小 * @param to GBK码 * @param toSize GBK码大小 */ void UTF8ToGBK(const uint8_t* from, uint32_t fromSize, uint8_t* to, uint32_t* toSize); /** * @brief GBK码转双字节UNICODE码 * @param from GBK码 * @param fromSize GBK码大小 * @param to UNICODE码 * @param toSize UNICODE码大小 */ void GBKToUnicode(const uint8_t* from, uint32_t fromSize, uint8_t* to, uint32_t* toSize); /** * @brief 双字节UNICODE码转GBK码 * @param from 双字节UNICODE码 * @param fromSize UNICODE码大小 * @param to GBK码 * @param toSize GBK码大小 */ void UnicodeToGBK(const uint8_t* from, uint32_t fromSize, uint8_t* to, uint32_t* toSize); /** * @brief 三字节UTF8码转双字节UNICODE码 * @param from UTF8码 * @param fromSize UTF8码大小 * @param to GBK码 * @param toSize GBK码大小 */ void UTF8ToUnicode(const uint8_t* from, uint32_t fromSize, uint8_t* to, uint32_t* toSize); /** * @brief 双字节UNICODE码转三字节UTF8码 * @param from * @param fromSize * @param to * @param toSize */ void UnicodeToUTF8(const uint8_t* from, uint32_t fromSize, uint8_t* to, uint32_t* toSize); ```