Home > Back-end >  Who can help me to change this JAVA method calculating the TLV length into DELPHI, thank the first
Who can help me to change this JAVA method calculating the TLV length into DELPHI, thank the first

Time:09-19

Public byte [] parseLength (int length) {
If (length & lt; 0 {
Throw new IllegalArgumentException ();
} the else
//short form
If (length & lt; 128) {
Byte [] actual=new byte [1].
Actual [0]=length (byte);
Return the actual;
} the else
//long form
If (length & lt; 256) {
Byte [] actual=new byte [2].
Actual [0]=0 x81 (byte);
Actual [1]=length (byte);
Return the actual;
} else if (length & lt; 65536) {
Byte [] actual=new byte [3].
Actual [0]=0 x82 (byte);
Actual [1]=(byte) (length & gt;> 8);
Actual [2]=length (byte);
Return the actual;
} else if (length & lt; 16777126) {
Byte [] actual=new byte [4].
Actual [0]=0 x83 (byte);
Actual [1]=(byte) (length & gt;> 16);
Actual [2]=(byte) (length & gt;> 8);
Actual [3]=length (byte);
Return the actual;
} else {
Byte [] actual=new byte [5].
Actual [0]=0 x84 (byte);
Actual [1]=(byte) (length & gt;> 24);
Actual [2]=(byte) (length & gt;> 16);
Actual [3]=(byte) (length & gt;> 8);
Actual [4]=length (byte);
Return the actual;
}
}


CodePudding user response:

This code writes very poor...

CodePudding user response:

//add a dynamic byte array, feel free to send content length and change the add by nexotp 20170426
The function TdmDataClient. Getbytearr (strlen: Integer; Var ss: TBytes) : Boolean;
The begin
Result:=FALSE;
IF strlen=0 then
The Exit;
If strlenThe begin
SetLength (ss, 1);
Ss [0] :=strlen;
End
Else if (STRLEN>=128) AND (strlen<256) then
The begin
SetLength (ss, 2);
Ss [0] :=81;
Ss [1] :=strlen;
end;




Result:=true;
end;

  • Related