public byte[] parseLength(int length) {
if (length < 0) {
throw new IllegalArgumentException();
} else
// 短形式
if (length < 128) {
byte[] actual = new byte[1];
actual[0] = (byte) length;
return actual;
} else
// 長形式
if (length < 256) {
byte[] actual = new byte[2];
actual[0] = (byte) 0x81;
actual[1] = (byte) length;
return actual;
} else if (length < 65536) {
byte[] actual = new byte[3];
actual[0] = (byte) 0x82;
actual[1] = (byte) (length >> 8);
actual[2] = (byte) length;
return actual;
} else if (length < 16777126) {
byte[] actual = new byte[4];
actual[0] = (byte) 0x83;
actual[1] = (byte) (length >> 16);
actual[2] = (byte) (length >> 8);
actual[3] = (byte) length;
return actual;
} else {
byte[] actual = new byte[5];
actual[0] = (byte) 0x84;
actual[1] = (byte) (length >> 24);
actual[2] = (byte) (length >> 16);
actual[3] = (byte) (length >> 8);
actual[4] = (byte) length;
return actual;
}
}
uj5u.com熱心網友回復:
這代碼寫得很拙劣...
uj5u.com熱心網友回復:
//添加一個獲得動態位元組陣列,隨時發送內容長度而變化 add by nexotp 20170426function TdmDataClient.Getbytearr(strlen:Integer ;var ss:TBytes): Boolean;
begin
Result := FALSE;
IF strlen=0 then
Exit;
if strlen<128 then
begin
SetLength(ss,1);
ss[0]:=strlen;
end
else if (STRLEN>=128) AND (strlen<256) then
begin
SetLength(ss,2);
ss[0]:=81;
ss[1]:=strlen;
end;
Result := true;
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/55104.html
標籤:語言基礎/算法/系統設計
