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