prevod z hexa na decimalni ?

Ing. Vlastimil Pospíchal vpospichal na tiscali.cz
Neděle Červen 22 10:55:35 CEST 2003


On Sun, Jun 22, 2003 at 07:47:41 +0200, Petr wrote:
> > > chci prevest budto binarni data anebo jejich hexa reprezentaci (tj.
> > > napr. FFFF46060813...) na decimalni cisla po wordech (tj po 16bitech),
> > > napriklad $FFFF46060813 aby mi to prevedlo na 3 decimalni cisla: 65535
> > > 1606 4872
> > > Cim to udelat, abych to nemusel prevadet ruco?
> > > P.
> 
> > hexdec(substr($colors[$ci], 0, 2))
> > hexdec(substr($colors[$ci], 2, 2))
> > hexdec(substr($colors[$ci], 4, 2))
> > Emo
> 
> je to ono, problem je jen, ze vstupni rada (HEXA vstup) je treba 20kB
> kontinualniho stringu (bez mezer)
> a vystupni ma byt po wordovych cisilkach, tedy vzdy zkonvertovane 2 bajty
> 
> mam nejakou funkci, ale zatim mi to nechodi, kdo poradi?:
> 
> Function HexToDec(in1)
> For i = 1 To Len(in1)
> out = UCase(Mid(in1, i, 1))
> If Asc(out) >= 65 Or Asc(out) >= 90 Then
> out = Asc(out) - 55
> End If
> output = output + (out * (16 ^ (Len(in1) - i)))
> Next i
> HexToDec = output
> End Function

Co je to za jazyk? Jestli je to VBS, tak nechápu, co to pohledává tady.

V Perlu bych to udělal ze STDIN asi takto:

while ($in1=<>){
  for ($i=0;$i<length($in1);$i+=4) {
    print hex(substr($in1,$i,4))," ";
  }
}

Pokud je proměnná $in1 již naplněna, lze vnější cyklus samozřejmě vypustit.
Rovněž výsledek se dá snadno nasypat do stringu místo na STDOUT.

Kit
-- 
Ing. Vlastimil Pospíchal
http://www.hoteldrnholec.cz


Další informace o konferenci Linux