我是这样想的,如 10个数字,26个字母 你可以取出所有的数字或是字母的ASCII值, 取出来了,你现在定义一个数组, 如 int _Code[128]={...} 里面的值就你自己想写什么都可以 不过最好用十六进制,每个都用两位,按上面取出的ASCII的值,取出对应数组下里的值 如 a ASCII 97 那么就取出数组下标为97的值 这样取出所有的字符的值就行了,你想倒放放还要顺的放就由你了 返回来就可以按你做的那样就行了, 不过那个数组要保存好不能改
CPU ID 000006FDBFEBFBFF0000E39D 这么长 很多软件的注册码都可以做到很短
把16进制转换成32进制, 原来的24字符可缩短到20字符:function ToDec(S: String; iNum: Integer): Integer; var i : Integer; C : Char; begin Result := 0; for i := 1 to Length(S) do begin Result := Result * iNum; C := UpperCase(S[i])[1]; if (C >= '0') and (C <= '9') then Result := Result + ord(C) - ord('0') else Result := Result + ord(C) - ord('A') + 10; end end;function DecTo(iDec, iNum, iDig: Integer): String; var i : Integer; begin Result := ''; while iDec > 0 do begin i := iDec mod iNum; if i <= 9 then Result := chr(i + ord('0')) + Result else Result := chr(i - 10 + ord('A')) + Result; iDec := iDec div iNum; end; Result := '0000000000000000' + Result; Result := Copy(Result, Length(Result) - iDig + 1, iDig); end;function HexToS32(S: String): String; var sBin: String; i : Integer; begin sBin := ''; for i := 1 to Length(S) do sBin := sBin + DecTo(ToDec(S[i], 16), 2, 4); sBin := sBin + '0000'; Result := ''; for i := 0 to Length(sBin) div 5 - 1 do Result := Result + DecTo(ToDec(Copy(sBin, i * 5 + 1, 5), 2), 32, 1); end;function S32ToHex(S: String): String; var sBin: String; i : Integer; begin sBin := ''; for i := 1 to Length(S) do sBin := sBin + DecTo(ToDec(S[i], 32), 2, 5); Result := ''; for i := 0 to Length(sBin) div 4 - 2 do Result := Result + DecTo(ToDec(Copy(sBin, i * 4 + 1, 4), 2), 16, 1); end;//调用的例子 procedure TForm1.FormCreate(Sender: TObject); var s : String; begin s := HexToS32('000006FDBFEBFBFF0000E39D'); //16进制->32进制 ShowMessage (s); ShowMessage (S32ToHex(s)); //转换回16进制 Application.Terminate; end;
10个数字,26个字母
你可以取出所有的数字或是字母的ASCII值,
取出来了,你现在定义一个数组,
如
int _Code[128]={...}
里面的值就你自己想写什么都可以
不过最好用十六进制,每个都用两位,按上面取出的ASCII的值,取出对应数组下里的值
如
a ASCII 97
那么就取出数组下标为97的值
这样取出所有的字符的值就行了,你想倒放放还要顺的放就由你了
返回来就可以按你做的那样就行了,
不过那个数组要保存好不能改
很多软件的注册码都可以做到很短
var
i : Integer;
C : Char;
begin
Result := 0;
for i := 1 to Length(S) do
begin
Result := Result * iNum;
C := UpperCase(S[i])[1];
if (C >= '0') and (C <= '9') then
Result := Result + ord(C) - ord('0')
else
Result := Result + ord(C) - ord('A') + 10;
end
end;function DecTo(iDec, iNum, iDig: Integer): String;
var
i : Integer;
begin
Result := '';
while iDec > 0 do
begin
i := iDec mod iNum;
if i <= 9 then
Result := chr(i + ord('0')) + Result
else
Result := chr(i - 10 + ord('A')) + Result;
iDec := iDec div iNum;
end;
Result := '0000000000000000' + Result;
Result := Copy(Result, Length(Result) - iDig + 1, iDig);
end;function HexToS32(S: String): String;
var
sBin: String;
i : Integer;
begin
sBin := '';
for i := 1 to Length(S) do
sBin := sBin + DecTo(ToDec(S[i], 16), 2, 4);
sBin := sBin + '0000';
Result := '';
for i := 0 to Length(sBin) div 5 - 1 do
Result := Result + DecTo(ToDec(Copy(sBin, i * 5 + 1, 5), 2), 32, 1);
end;function S32ToHex(S: String): String;
var
sBin: String;
i : Integer;
begin
sBin := '';
for i := 1 to Length(S) do
sBin := sBin + DecTo(ToDec(S[i], 32), 2, 5);
Result := '';
for i := 0 to Length(sBin) div 4 - 2 do
Result := Result + DecTo(ToDec(Copy(sBin, i * 4 + 1, 4), 2), 16, 1);
end;//调用的例子
procedure TForm1.FormCreate(Sender: TObject);
var
s : String;
begin
s := HexToS32('000006FDBFEBFBFF0000E39D'); //16进制->32进制
ShowMessage (s);
ShowMessage (S32ToHex(s)); //转换回16进制
Application.Terminate;
end;