php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
HEX to ALPHA


 
mikes
28-08-2003, 10:56 
 
Hallo Leute, ich bin neu hier und hab auch gleich ein riesen Problem...

ich möchte einen Hex String (0F1FFFFFFBFD05091E7B0001) in Alpha umconvertieren also zu (MWXUT......)


hat einer ne Idee ?

 
wahsaga
28-08-2003, 10:59 
 
und wo ist das problem?

splitte den string in teile zu jeweils 2 zeichen auf, rechne hex in dec um (sofern nötig, evtl. geht's auch ohne), und lasse dir mit chr() das zugehörige zeichen ausgeben.

 
scriptingmike
28-08-2003, 11:03 
 
mit

hexdec(hexwert)

siehe Umwandkungsfunktionen

 
mikes
28-08-2003, 11:44 
 
Danke für die schnelle antwort, aber jetzt nochmal genau denn ich komme da nicht hin.


Das problem ist eigentlich das das ich eine Serial generieren will in php, in Delphi habe ich es aber da die auch per php generiert werden soll komme ich nicht ganz klar

hier nochmal genau ich habe einen String:

0F1FFFFFFBFD05091E7B0001 <---- 24 Zeichen lang


so geht es jetzt in delphi

s:=hex2alpha(copy(result,1,20), 1)+hex2alpha(copy(result,21,4),4875);

es werden also die ersten 20 Chars in hex2alpha converted

das ist dann: MWXUTXUP072K6P3HHN3G

und dann die anderen 4 vom String

mit der function:


function encrypt(cod:string;app:word):string;
var i,p,k: integer;
mkr,s:string;
begin
app := '4875';
cod := 'MWXUTXUP072K6P3HHN3G...';
result := '';
mkr:= 'VEY6ZG13M28QR457CUF9ADHJLWKNOPTX';
alf := '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';

//extract the 8char right part of the 10char resulting string
s:=copy(hexencrypt(inttohex(app,8)),3,8);
for i := 1 to length(cod) do begin
p:=pos(Cod[i],alf);
k:=ord(s[i mod 8 +1]) mod 32;
if (p>0) then result:=result+mkr[(p+k-1) mod 32+1] else result:=result+cod[i];
end;
end;

//parameter length must be multiple of 4
//for each 4 hex segment this return a 5 hex segment
function hexencrypt(s16:string):string;
var i,J:integer;
l,m,n:byte;
begin
result:='';
l:=length(s16);
for i := 0 to (l div 4)-1 do begin
m:=0;
for j:=1 to 4 do m:=m+(strtoint('$'+s16[i*4+j]) mod 4);
result:=result+inttohex(m,1);
for j:=1 to 4 do begin
n:=(strtoint('$'+s16[i*4+j])+ m) mod 16;
result:=result+inttohex(n,1);
end;
end;
end;

Auch du kannst die code.tags/php.tags des Forums benutzen. code.tags by wotan

wie gehtn das nun in php ?
:confused:


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:04 Uhr.