类型转换:integer与char的转换(50分)

  • 主题发起人 主题发起人 qqjm
  • 开始时间 开始时间
Q

qqjm

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:
如何将一个integer类型的变量的值保存在字符数组的某4个连续的字符里。
如何读出来。

i:integer;
lchar:array [0..3] of char;
 
好象可以用联合记录,如:
TDWordRec = record
case integer of
0:(dw:DWord);
1:(b1,b2,b3,b4:byte)
end;
在PC中,整型数是低位有前,高位在后
 
to janker:谢了,但是我要的不是这个。
  是这样的,我收到了4个字节的数据,我把这4个字节暂时保存在字符数组里,
我现在要将这4个字节转变成一个integer的数据,然后进行进行一系列处理。
最后将所把处理后的4个字节发回去。发送的顺序按网络字节序。
 
用这个函数吧~~!
function Char4HexToInt(a,b,c,d:Char):Int64;
begin
Result := (integer(a) ) or
(integer(b) shl 8 ) or
(integer(c) shl 16 ) or
(integer(d) shl 24 ) ;
end;
 
接收的时候,可以直接保存成Integer型的啊
干吗要这么复杂哩
 
procedure Save(Int:integer; Data:pChar);
begin
PInteger(Data)^ := Int;
end;

Function Load(Data:pChar):Integer;
begin
Result := PInteger(Data)^;
end;

procedure TForm2.Button1Click(Sender: TObject);
var
i,j:integer;
lchar:array [0..3] of char;

begin
i:=100;
Save(i,@lchar); //保存
j := Load(@lchar); //载入
ShowMessage(IntToStr(j)); //显示一下结果看看对不对
end;
 
问题我自己已经解决了,我原来的代码已经是正确的,但是我没有做好网络字节序和主机字节序的转换,得到了一个错误的结果。测试的时候又没有对数组做完全的初始化,所以也没有得到预期的结果。
谢谢各位了。
 
后退
顶部