我目前有两个函数是实现此功能的,但只能处理正整数,负整数会出错,能否帮我增加处理负整数功能呢?谢谢!!!
//将整数转换为协议整数 - 按网络字节顺序的多个字节
Function ConvertInteger (Source,Len : Integer) : String;
Var
i : Integer;
Begin
Result := '';
For i := 1 To Len Do
Begin
Result := Chr (Source And $FF) +Result;
Source := Source Shr 8;
End;
End;
//将协议整数(网络字节顺序的多个字节)还原为整数
Function RevertInteger (Source : String) : Integer;
Var
i : Integer;
Begin
Source := Copy (Source,1,4) ;
Result := 0;i := 1;
While i<=Length (Source) Do
Begin
Result := Result Shl 8+Ord (Source[i]) ;
Inc (i) ;
End;
End;
//将整数转换为协议整数 - 按网络字节顺序的多个字节
Function ConvertInteger (Source,Len : Integer) : String;
Var
i : Integer;
Begin
Result := '';
For i := 1 To Len Do
Begin
Result := Chr (Source And $FF) +Result;
Source := Source Shr 8;
End;
End;
//将协议整数(网络字节顺序的多个字节)还原为整数
Function RevertInteger (Source : String) : Integer;
Var
i : Integer;
Begin
Source := Copy (Source,1,4) ;
Result := 0;i := 1;
While i<=Length (Source) Do
Begin
Result := Result Shl 8+Ord (Source[i]) ;
Inc (i) ;
End;
End;
解决方案 »
- if条件判断语句是先判断前面还是后面
- calculated字段和lookup字段有什么区别?
- Sql server 2000:如何清空某一个表格并且将标示列恢复到初始值?
- 请问用mscomm以16进制接受
- 请问如何在程序中改变登陆的数据库呀谢谢了!!!!
- 谁有U ARE U 2000 指纹识别仪的OCX控件或DLL调用库?
- 但极板的用什么数据库好
- 关于F1book的打印问题(up有分)
- tformx=class(tform)为什么无法建立实例?
- 在中国一般的小公司做Erp(Mis)程序员(分析员)会不会很痛苦?
- 请问如何用ini存储窗体的样式及设置!还有读取!!!
- 如何将FASTREPORT的报表文件保存到数据库中??
Procedure TForm1.Button8Click (Sender : TObject) ;
Var
EE,EE2 : Integer;
str : String;
Begin
EE := -2;
EE2 := 0;
str := ConvertInteger (EE,1) ;
EE2 := RevertInteger (str) ;
showmessage ('EE2='+IntToStr (EE2) ) ;
End;
var
i: Integer;
begin
Result := '';
if Len > SizeOf(Source) then
Exit;
for i := 1 to Len do
begin
Result := Chr(Source and $FF) + Result;
Source := Source shr 8;
end;
end;
//将协议整数(网络字节顺序的多个字节)还原为整数
function RevertInteger(Source: String): Integer;
var
i, Len: Integer;
n: Int64;
begin
Source := Copy(Source, 1, SizeOf(Result));
Result := 0;
n := 0;
i := 1;
Len := Length(Source);
while i <= Length(Source) do
begin
n := n shl 8 + Ord(Source[i]);
Inc(i);
end;
if n > Power($100, Len) / 2 - 1 then
n := n - Floor(Power($100, Len));
Result := n;
end;//LZ要这个干嘛???这样转换很容易出界的