private String getFileID(String fileid,double seed){
String mixed = getFileIDMixString(seed);
String[] ids= fileid.split("\\*");
StringBuilder realId = new StringBuilder();
int idx;
for (int i=0; i< ids.length; i++){
idx = Integer.parseInt(ids[i]);
realId.append(mixed.charAt(idx));
}
return realId.toString();
}
private String getFileIDMixString(double seed){
StringBuilder mixed = new StringBuilder();
StringBuilder source = new StringBuilder(
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890");
int index, len = source.length();
for (int i=0; i< len;++i){
seed = (seed * 211 + 30031) % 65536;
index = (int)Math.floor(seed/65536 * source.length());
mixed.append(source.charAt(index));
source.deleteCharAt(index);
}
return mixed.toString();
} javadelphi
String mixed = getFileIDMixString(seed);
String[] ids= fileid.split("\\*");
StringBuilder realId = new StringBuilder();
int idx;
for (int i=0; i< ids.length; i++){
idx = Integer.parseInt(ids[i]);
realId.append(mixed.charAt(idx));
}
return realId.toString();
}
private String getFileIDMixString(double seed){
StringBuilder mixed = new StringBuilder();
StringBuilder source = new StringBuilder(
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890");
int index, len = source.length();
for (int i=0; i< len;++i){
seed = (seed * 211 + 30031) % 65536;
index = (int)Math.floor(seed/65536 * source.length());
mixed.append(source.charAt(index));
source.deleteCharAt(index);
}
return mixed.toString();
} javadelphi
解决方案 »
- 关注中国程序员,关注中国软件业的请进,欢迎评论
- 求根据身份证计算用户的年龄的方法?
- 菜鸟求助
- 为什么每次打开我写的程序都会出现Database login登录呢?
- 多层系统的客户端ClientDataSet1.Locate定位不了汉字, 求教.
- 急(在线等待)
- 我好象在计算机的迷宫里丢失的方向,而手里却只有一半迷宫的地图??能借我另一半看看的请进了!
- (急)请问:AMovie_TLB.dcu 是否是Tactivemovie 这个控件的......
- 年后节日好找不?
- 有谁知道,请问东进语音卡与dialogic的语音卡提供的API是否差不多?还是大部分相同?
- delphi exe文件改后缀dat 后怎么用ShellExecute打开
- delphi中adoquery里的查询语句表名如何用变量表示呀?
var
mixed:string;
index,len,i:Integer;
begin
index:=Length(source);
len:=Length(source);
for i := 0 to len do
begin
seed:=(seed * 211 + 30031) mod 65536;
index:=floor(seed/65536 * length(source));
mixed:=mixed+copy(source,index,1);
source:=Delete(source,index,1);
end;
Result:=mixed;
end;
var
source: AnsiString;
i, index, len: Integer;
begin
Result := '';
// 源字串 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890
source := // 一个 \ 在java里是转移符,下面字串的 \\ 可能需要改为 \
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\:._-1234567890';
index := Length(source);
len := index; for i := 0 to len - 1 do
begin
seed := Floor(seed * 211 + 30031) mod 65535;
index := Floor(seed) div 65536 * Length(source);
Result := Result + source[index + 1];
Delete(source, index, 1);
end;end;function getFileID(fileid: AnsiString; seed: Double): AnsiString;
var
mixed: AnsiString;
ids: TStringList;
i, idx: Integer;
begin
Result := '';
mixed := getFileIDMixString(seed);
ids := TStringList.Create;
// string.split("\\*"); 的 \\* 应该是匹配 *字符?
ids.Delimiter := '*'; // 若如此,那么就用 * 来做字符串分隔的符号
ids.Text := fileid; // java string 索引从0开始,delphi 从1开始
for i := 0 to ids.Count - 1 do
begin
if (TryStrToInt(ids[i], idx)) then
Result := Result + mixed[idx + 1];
end;
ids.Free;
end;