delphi-UUID

代码如下

function GetLocalKID(guidstr: string; StrLength: Integer): string;
var
  CID, Res          : string;
  L, I1, I2, I3, K1, K2: Integer;
const
  F                 = '0123456789ABCDEF';
  T                 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-';
begin
  CID := guidstr;
  CID := ReplaceStr(CID, '{', '');
  CID := ReplaceStr(CID, '}', '');
  CID := ReplaceStr(CID, '-', '') + '0';
  if StrLength = 33 then
  begin
    Result := CID;
  end
  else if StrLength = 22 then
  begin
    Res := '';
    L := 1;
    while L < 33 do
    begin
      I1 := Pos(Copy(CID, L, 1), F);
      I2 := Pos(Copy(CID, L + 1, 1), F);
      I3 := Pos(Copy(CID, L + 2, 1), F);
      K1 := I1 * 4 + Trunc(I2 / 16);
      K2 := (I2 mod 16) * 4 + I3;
      Res := Res + Copy(T, K1, 1) + Copy(T, K2, 1);
      L := L + 3;
    end;
    L := Length(Res);
    while L < 22 do
    begin
      Res := Res + '0';
      L := L + 1;
    end;
    Result := Res;
  end;

end;

2.使用

function LocalKID(StrLength: Integer = 22): string;
var
  tmpGUID           : TGUID;
begin
  CreateGUID(tmpGUID);
  Result := GetLocalKID(GUIDToString(tmpGUID), StrLength);
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Listest

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值