宽字符串转字的节数组 一段代码 大家来讨论
我刚学delphi 没找到现成的函数,自己写了这段代码 ,请大家讨论一下其他的实现方法,var
a: WIDEstring;
l, b: Integer;
p: Pointer;
k: pbyte;
tem: array of byte;
type
TArr = array of byte;
begin
a := '李智勇';
//b := Pword(@a[1])^; //可以取出字符串的第一个word
l := pinteger(pinteger(@a)^ - 4)^; //字符串第一个字符在内存中-4是字符串的字节数量
SetLength(tem, pinteger(pinteger(@a)^ - 4)^); //为字节数组分配内存
p := Pointer(@a[1]); //把字符串的首地址转换为通用指针
k := pbyte(p); //通用指针在转换为在字节指针
// tem[0]:=k[0]; //也可以这样赋值,但麻烦
// tem[1]:=k[1];
move(k[0], tem[0], l); //用内存复制轻快
ShowMessage(IntToHex(tem[2], 2) + IntToHex(tem[3], 2)); //unicode 7A66
//通过这种转换不用字节高地位交换
end;
[ 本帖最后由 meisbrother 于 2009-10-12 21:07 编辑 ]