Unicode转Ansi

   最近在研究wrk代码。在进行windows开发中时常会碰到宽字节转成单字节的问题,微软提供了一个方便的宽字节和单字节之间转换的函数,不仅如此含有转换成其他字符编码的功能,总的说来很强大。我们知道unicode其实就是宽字节类型存储的,在表示中文字符时使用的就是宽字节,而英文字符在宽字节中存储在第一位是ascii码值后一位补零出来。知道这个之后原理之后,我们就可以知道如何进行将unicode转换成ansi了。代码如下

<textarea cols="86" rows="19" name="code" class="cpp">PCHAR UnicodeToAnsi ( IN PUNICODE_STRING UnicodeString, OUT PCHAR AnsiBuffer, IN ULONG MaxAnsiLength ) { PCHAR Dst; PWSTR Src; ULONG Length; Length = UnicodeString-&gt;Length / sizeof( WCHAR ); if (Length &gt;= MaxAnsiLength) { Length = MaxAnsiLength - 1; } Src = UnicodeString-&gt;Buffer; Dst = AnsiBuffer; while (Length--) { *Dst++ = (UCHAR)*Src++; } *Dst = '/0'; return AnsiBuffer; </textarea>

你可能感兴趣的:(windows,String,存储,微软,DST)