Hex do ....

0

Mam problem... (jak to na forum bywa :) )

Musze odczytać 2 sąsiadujące baity ze stringa i przetłumaczyć je na Dec.

Przy jednym bajcie :) nie ma problemu (Ord()) ale jak to zrobić z dwoma naraz ??

Jestem otwarty na wszelkie sugestie i propozycje. Thx.

0

wyn := Ord(S[1])+Ord(S[2])*255

poza tym nie wiem czy dokońca 255, czy inna potęga, to już matematycznie trzeba... chyba...

0

Zdeka nie o to chodzi :(
Przykład:
Mam wartości w hexach : 01 09 . W dec będzie to 265.
A twoim sposobem będe miał ( 1 + 9)*255.
Może po prostu jest jakaś funkcja która zamienia słowa na hexy :)

0

Wy(prze)kombinowałem taką uniwersalną funkcję:

function CharsToInt(S: String; Index, Count: Byte): Integer;
begin
  S := Copy(S, Index, Count);
  Result := Integer((@S[1])^);
end;

gdzie:
Index - index pierwszego znaku
Count - liczba znaków to zrzutowania

Albo może tak:

wynik := Word((@S[INDEX])^);
wynik := (Word(S[INDEX]) shl 8) or Byte(S[INDEX]);

Ale mam przeczucie, że są lepsze rozwiązania :-D (może w asm? ale ja się na tym nie znam :-P)

0

var
s:string;
i:integer; // właściwie word albo lepiej byte wystarczyłby

i:=strtoint('$'+copy(s,pos,2));

I więcej nie trzeba.

//poza tym nie myl bitu z bajtem (=8 bitów)

0

i:=strtoint('$'+copy(s,pos,2));

Ale ten string to chyba nie są znaki hexadecymalne (przynajmniej nie napisano, że są), więc przy np. $AG się wykrzaczy.

[dopisane]
Pomyłka, chyba jednak są skoro w temacie pisze Hex [wstyd]

1 użytkowników online, w tym zalogowanych: 0, gości: 1