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 20170426The function TdmDataClient. Getbytearr (strlen: Integer; Var ss: TBytes) : Boolean;
The begin
Result:=FALSE;
IF strlen=0 then
The Exit;
If strlen
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;