var I , J : integer; C : char; P : ^Byte; begin I := 1; C := '1'; P := @I; for J := 0 to SizeOf(I)-1 do begin Memo1.Text := Memo1.Text + format('%.2x',[P^]);//整数1的16进制 inc(P); end; memo1.Lines.Add(''); P := @C; for J := 0 to SizeOf(I)-1 do begin Memo1.Text := Memo1.Text + format('%.2x',[P^]);//字符'1'的16进制 inc(P); end;end;结果是:01000000 31010000即不是30,更没有B5
我明白你的意思了 你用WideString就行了
只能给你说一下原理了,不知道你在想什么,你想得到什么,不能给你写代码。const S : string = '1点钟'; 这时,S[1]就是'1',它的十六进制不是你说的[31B5] [31B5]是两个字节!一个字符只占一个字节!const S : widestring = '1点钟'; 这时,S[1]就是'1',它的十六进制是[0031],虽然占二个字节,但也不是31B5!!!!我在上面举出了众多的代码,都是以字节为单位取它的内存并以16进制显示出来。你自己参考,自己改! 目前没法给你写出代码!教给你方法,你自己去做! 还是那句话:把概念搞清楚了再问问题,你自己问得也清楚,别人回答得也痛快! 累死了!88!
唉....我再来回一个。如果用String,这样就是你要的结果:var S : String; I : integer; P : ^Byte; tempS : string; ResultStr : string; begin S := '1' + '点钟'; //之所以分开写,是启示你如此赋值钟点数 P := @S[1]; tempS := format('%.2x',[P^]); ResultStr := 'A' + Copy(tempS,1,1) + 'B' + Copy(tempS,2,1) + 'B5E3D6D3'; ShowMessage(ResultStr);//这就是结果 end;'B5E3D6D3'是'点钟'的内存格式,因为1-24点都是'点钟',所以直接用字串就行了!
S : WideString;
P : ^Byte;
begin
S := '1点钟';
P := @S[1];
showmessage(inttostr(SizeOf(S[1]))); //S[1]占二个字节
showmessage(format('%.2x',[P^])); //'1'的低字节 : 31
inc(P);
showmessage(format('%.2x',[P^])); //'1'的高字节 : 00
end;
是这样的,发送从1-24钟点时间的十六JZ,那么1不就是:
30 B5 吗,现在是要把这个30 B5变成A3 B0 B5的形式,
!
I , J : integer;
C : char;
P : ^Byte;
begin
I := 1;
C := '1';
P := @I;
for J := 0 to SizeOf(I)-1 do
begin
Memo1.Text := Memo1.Text + format('%.2x',[P^]);//整数1的16进制
inc(P);
end;
memo1.Lines.Add('');
P := @C;
for J := 0 to SizeOf(I)-1 do
begin
Memo1.Text := Memo1.Text + format('%.2x',[P^]);//字符'1'的16进制
inc(P);
end;end;结果是:01000000
31010000即不是30,更没有B5
你用WideString就行了
这时,S[1]就是'1',它的十六进制不是你说的[31B5] [31B5]是两个字节!一个字符只占一个字节!const S : widestring = '1点钟';
这时,S[1]就是'1',它的十六进制是[0031],虽然占二个字节,但也不是31B5!!!!我在上面举出了众多的代码,都是以字节为单位取它的内存并以16进制显示出来。你自己参考,自己改!
目前没法给你写出代码!教给你方法,你自己去做!
还是那句话:把概念搞清楚了再问问题,你自己问得也清楚,别人回答得也痛快!
累死了!88!
S : String;
I : integer;
P : ^Byte;
tempS : string;
ResultStr : string;
begin
S := '1' + '点钟'; //之所以分开写,是启示你如此赋值钟点数
P := @S[1];
tempS := format('%.2x',[P^]);
ResultStr := 'A' + Copy(tempS,1,1) + 'B' + Copy(tempS,2,1) + 'B5E3D6D3';
ShowMessage(ResultStr);//这就是结果
end;'B5E3D6D3'是'点钟'的内存格式,因为1-24点都是'点钟',所以直接用字串就行了!