注册 登录
编程论坛 Delphi论坛

宽字符串转字的节数组 一段代码 大家来讨论

meisbrother 发布于 2009-10-11 23:07, 1064 次点击
我刚学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 编辑 ]
0 回复
1