C++中Unicode (Big-Endian)和Unicode的相互转换
2012-04-14 15:31
330 查看
关于字节序的大端小端在这里不再阐述, 作者假定读者已经了解其中编码原理, 贴代码(详细见RLIB源码, 实现简单):
typedef __declspec(align(1)) struct WCHARStruct { CHAR High; CHAR Low; }*PWCHARStruct;
To Unicode (Big-Endian):
if (codepage == Text::UTF16FEncoding::CodePage) { MemoryStream *pUtf16F = new MemoryStream(length * sizeof(WCHAR)); //替换高低两位 auto pUtf16FData = (WCHAR *)pUtf16F->ObjectData, pUtf16Data = (WCHAR *)src; pUtf16F->Length = length * sizeof(WCHAR);//bytes length--;//基址by 0 while(length >= 0) { ((PWCHARStruct)(&pUtf16FData[length]))->High = ((PWCHARStruct)(&pUtf16Data[length]))->Low; ((PWCHARStruct)(&pUtf16FData[length]))->Low = ((PWCHARStruct)(&pUtf16Data[length]))->High; length--; } return pUtf16F; } //if
To Unicode:
if (codepage == Text::UTF16FEncoding::CodePage) { MemoryStream *pUtf16 = new MemoryStream(length); //替换高低两位 auto pUtf16Data = (WCHAR *)pUtf16->ObjectData, pUtf16FData = (WCHAR *)src; if ((length % 2) != 0) { length--;//数据丢失? assert(!"不合法的数据长度"); } pUtf16->Length = length;//bytes (length /= 2)--;//WCHAR size = 2, 基址by 0 while(length >= 0) { ((PWCHARStruct)(&pUtf16Data[length]))->High = ((PWCHARStruct)(&pUtf16FData[length]))->Low; ((PWCHARStruct)(&pUtf16Data[length]))->Low = ((PWCHARStruct)(&pUtf16FData[length]))->High; length--; } return pUtf16; } //if
相关文章推荐
- GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换
- Ansi,Unicode(little endian),Unicode big endian,UTF-8编码文件相互转换
- 低字节序和高字节序相互转换(Little Endian/Big Endian) [C#]
- c++ unicode模式下CString 到string的相互转换
- php 字符编码转换类,支持ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom 互相转换
- ANSI、UTF-8、Unicode(little endian)、Unicode big endian的互相转换
- UNICODE 与 UTF8 的相互转换 (c++)版
- [C/C++]_[utf8和unicode的相互转换]
- 低字节序和高字节序相互转换(Little Endian/Big Endian)
- [C/C++]_[utf8和unicode的相互转换]
- C/C++中ASCII与Unicode字符串相互转换
- unicode utf-8 gb2312编码 使用C++相互转换的代码
- C++中int与string的相互转换
- char * 与 string 类型相互转换方法--Linux C/C++
- C++中字符串-数字相互转换
- c++调用js 获取值, VARIANT与CString相互转换
- ASCII,UTF-8,Unicode字符串相互转换
- (转载)C++中枚举与字符串相互转换
- 【JAVA编码】 JAVA字符编码系列二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换
- c++ CString string char* char int类型的相互转换