delphi 中英文字符串与字节数组 互转
1个回答
展开全部
string
string = AnsiString = 长字符串,理论上长度不受限制,但其实受限于
最大寻址范围2的32次方=4G字节;
变量Str名字是一个指针,指向位于堆内存的字符序列,字符序列起始于
@Str[1],@Str[1]偏移负16个字节的空间存储着字串长度、引用计数等信息。
字符序列以NULL结束。
string[n]
string[n] = ShortString = 短字符串,最多容纳255个字符,实际长度是
字符长度+1,是Delphi的简单类型;
Str[0]存储着字符的个数,第一个字符从Str[1]开始存放,不以NULL结束
。
字节数组转string
把buf内容赋给ShortString
var
buf: array[0..100] of byte;
str: string[32];//仅仅开辟了一个32个空间的内存,由于第1位没有用
setlength初始化,导致长度不定
i : Integer;
begin
//如果在此处就对str进行赋值,str[0]位就有计数了,如果在使用之前没有
对其进行使用,用SetLength进行赋值
for i := 50 to 81 do buf[i] := ord('A') + i -50;//测试数据
SetLength(str, 32);//设置str[0]=32;
Move(buf[50], str[1], 32);//内存复制
ShowMessage (str);
end;
string = AnsiString = 长字符串,理论上长度不受限制,但其实受限于
最大寻址范围2的32次方=4G字节;
变量Str名字是一个指针,指向位于堆内存的字符序列,字符序列起始于
@Str[1],@Str[1]偏移负16个字节的空间存储着字串长度、引用计数等信息。
字符序列以NULL结束。
string[n]
string[n] = ShortString = 短字符串,最多容纳255个字符,实际长度是
字符长度+1,是Delphi的简单类型;
Str[0]存储着字符的个数,第一个字符从Str[1]开始存放,不以NULL结束
。
字节数组转string
把buf内容赋给ShortString
var
buf: array[0..100] of byte;
str: string[32];//仅仅开辟了一个32个空间的内存,由于第1位没有用
setlength初始化,导致长度不定
i : Integer;
begin
//如果在此处就对str进行赋值,str[0]位就有计数了,如果在使用之前没有
对其进行使用,用SetLength进行赋值
for i := 50 to 81 do buf[i] := ord('A') + i -50;//测试数据
SetLength(str, 32);//设置str[0]=32;
Move(buf[50], str[1], 32);//内存复制
ShowMessage (str);
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询