解决方案 »
- 请教TMemoryStream用法
- 请问:双击delphi窗体标题栏发生什么事件?我想在………
- VisiBroker 4.5 中 iiop客户端能否通过OAD来激活服务程序?
- Web Service 组件的一个方法需要传递一个XML记录集,当这个记录集大于45K(XML数据的长度)时,上传速度突然变的很慢。。。
- reportmachine中,怎样动态设置某memo的值?或者FastReport有同样解决办法也可以。
- 怎样实现金山快译中的即指即译功能
- 高分求救:关于把二进制写入数据库的问题
- form颜色
- 50分寻找一个构件,我的分不多,行行好吧
- Delphi的Bug太多,我还是用回我的VB
- 关于程序未响应的问题
- delphi 2010 dll 加载问题
CRC16Text = class
class function getCRC(str: AnsiString): AnsiString;
end;
......class function CRC16Text.getCRC(str: AnsiString): AnsiString;
var
tmp: AnsiString;
bytes: array of Byte;
i, j, crc, polynomial, sLen: Integer;
bit, c15: Boolean;
begin
Result := '';
tmp := '';
crc := $FFFF;
polynomial := $1021; sLen := Length(str);
SetLength(bytes, sLen div 2); for i := 0 to sLen - 1 do
begin
if (i mod 2 = 0) then
begin
tmp := Copy(str, 1 + i, 2);
Assert(tmp <> '', 'tmp 变量为空字符。');
bytes[i div 2] := StrToInt('$' + tmp);
end;
end; for i := Low(bytes) to High(bytes) do
begin
for j := 0 to 7 do
begin
bit := (bytes[i] shr (7 - j) and 1) = 1;
c15 := (crc shr 15 and 1) = 1;
crc := crc shl 1;
if (c15 xor bit) then
crc := crc xor polynomial;
end;
end;
crc := crc and $FFFF;
Result := IntToHex(crc, 4);
end;
// 调用
var
abc: AnsiString;
begin
abc :=
CRC16Text.getCRC('5B0000001F0001EC38100205BDB344010000010000117B86DEE2DD37A8035D');
ShowMessage(abc); //结果为2f7a
end;