Hex egy húr, és fordítva

Hex String, és fordítva

Mester kérem, mondja meg, hogyan kell átalakítani a Hex String, és fordítva. Megvan például egy bizonyos bájtsorozatok: Buf: array of Byte







Megvan ez a gyönyörű Buf lefordítani egy karakterlánc, amely tartalmazza a saját HEX formátum
s. húr. ahol vonal hossza megegyezik a hossza viszont Buf * 2 és vissza!

Talán vannak olyan komponensek, amelynek segítségével könnyű lenne működni HEX?

Lásd a formátumot () függvény


> Pat

És hogyan működik vele? moslék formátum nem megoldás [0]

AL1 # XA0; (21.11.04 18:35) # XA0;
Nincs szükség, Hex már String, illetve, és fordítva.
De miért a téma önmagában már beszél bájt.


> [2] AL1 # XA0; (21.11.04 18:56)

A munka, mint: Format ( "% x", [IntegerValue]).


> Mester kérem, mondja meg, hogyan kell átalakítani a Hex karaktersorozat
> És fordítva.

1) Egy HEX String (vagy inkább a egész szám, bájt vagy más egész típusok in string formátumban HEX)
# XA0, a) függvény IntToHex (Érték: integer; számjegyek: Integer): string;
# XA0; b) méret (már kifejtette predіduschih hozzászólás)

2.) Vissza
# XA0; funkció StrToInt (const S: string): egész;

például: # XA0; MyInteger: = StrToInt ( "$" + SajatString);

ahol vonal hossza megegyezik a hossza viszont Buf * 2 és vissza

Igen, azt hiszem, értem. Minden byte kell feltüntetni két számjegy. Majd akkor:

Tévedtem, nem
IntToHex (BUF [i])
valamint az írásbeli SergP
IntToHex (BUF [i], 2)
Bár van még egy probléma a nullát. Format valószínűleg nélkül nem tud, de írtam, hogy közvetlenül átalakítani

nem kell egy kicsit:
Megvan Buf: kitűnő Byte, mely 6 byte: 6D6F757365 és szeretnék s: String nyert etogo szó egér SHex: string kap „6D6F757365”. (Én jövök hossza 5 karakter és SHex 10 karakter)

Azaz azt kell tudni, hogyan tudok átalakítani a Buf egy karakterlánc és StringinHex és fordítva!


> [9] AL1 # XA0; (21.11.04 19:29)

Valami, amit nem az üvegházban, ahol 6 byte, én csak látni 5.


> [9] AL1 # XA0; (21.11.04 19:29)

De általában fogantyúk húrok egy ciklus 2 karakter, minden darab fordítja Byte segítségével StrToInt, és akkor kap a karakter megfelelő kód használatával Chr ().

Mi az a srác leszállt? Csak mondd meg a választ, és minden :)

var
# XA0; Buf: tömb byte;
# XA0; S, SHex: String;
# XA0 I: integer;

kezdődik
# XA0; S: = "";
# XA0; SHex: = "";
# XA0, mert én: = Low (BUF) Magas (BUF) do
# XA0; kezdődik
# XA0; # XA0; S: = S + Chr (BUF [I]);
# XA0; # XA0; SHex: = SHex + formátum ( "% x", [Buf [I]])
# XA0; end
végén.

Valami ehhez hasonló, chtoli?

funkció HerZnaetChtoToString (var MyBuf: TMyArray): string;
var
# XA0; i: integer;
kezdődik
# XA0; setlength (eredményeképpen magas (MyBuf) Low (MyBuf) +1);
# XA0; i: = alacsony (MyBuf) Magas (MyBuf) do
# XA0; eredményeként [i-alacsony (MyBuf) +1]: = CHR (MyBuf [i]);
végén;

A papír nem próbálta. Lehet, hogy tévedek valahol a menet.

A IntToHex nem probléma, egy vezető nullával.

Köszönöm.

> Előkészületek. vég

És akkor is mondani a kódot visszafordítani a folyamatot?
(String in BUF)


> [21] AL1 # XA0; (21.11.04 21:06)


> És akkor is mondani a kódot visszafordítani a folyamatot?
> (Ebből a String BUF)

Egy karakterlánc - S vagy SHex?

Ha úgy érted SHex, akkor:

var
# XA0; Buf: tömb byte;
# XA0; SHex: String;
# XA0 I, Len: integer;

Működik, de a optimalitást - Nem tudom. Akarok aludni, töprengett rossz.

Ui Szeretem a Balti-7.

Köszönöm. Úgy tűnik, hogy működik!
Ez a kérdés:
while (I <= High(Buf)) do







valamint a jogot, hogy a megfelelő méretű Buf?


> [24] AL1 # XA0; (21.11.04 21:42)


> És hogyan kell beállítani a kívánt méretet azonnal Buf?

Buf kívánt méret van beállítva a sorban: "SetLength (BUF, Len div 2)."

Ui Akkor is Baltic 3.

míg a ciklus lehet helyettesíteni, azaz helyette:


> Hmm. Nem látni nekem egy sört. - (

Az, hogy az e-mail! Ország? City. -)

Nem, nem látom. Nem valószínű, hogy ő nastolko vastag finom célzásokat :) Ő megérti magát, hogy nem tudja megérteni.


> Ő maga nem tudja megérteni valamit.

Én nem ittam, hogy a lényeg, hogy magam, hogy nem érti. -)

És mi van a Hex átalakítás egy string, és fordítva - matatott egy halom dokumentumot. bárhol a dia UTB obyasnyaetsya. tényleg nincs példa. és kevés világos :-( Tud valaki mondja meg, hogy hol vagyok szól UTB olvasmányként hálás leszek -?).


> [30] AL1 # XA0; (21.11.04 22:17)

Most a tippeket csak a teljes kifizetés :-)

16 bites adatok ábrázolása.
Range 0x00 hogy 0xFF
(Ha int, majd 0 és 255)

Először is, nem ez nem egy 16-bites ábrázolása az adatokat. Ez az ábrázolás a 16 szám hexadecimális számrendszerben. 16-bites ábrázolása a 3. ábra, amikor rögzítik a 16 bites valamit. például
0000000000000003
vagy
0000000000000101

A lényeg „kiszerelés”. Csak olyan emberek. Egy szabványos processzor, úgy néz ki, mint a „nincs”. Ő érdekel a mi van odakint 16 bites ábrázolás, képviselet a 16 hexadecimális számrendszer. Akkor az iskolában nem tanítják, hogyan kell lefordítani egy elszámolási rendszer másik nem?


> Te nem tanították az iskolában, hogyan lehet átvinni egyik számítási rendszer
> A másik nem?

Még tanítottam! Mi felzárkózni, és ismét tanítani. -)


> például
> 0000000000000003
> vagy
> 0000000000000101

Ez a bináris ábrázolása az adatokat. -)
3 közötti egész szám - UTB 0x03 Hex

Megmutattam, hogy mi a 16-bites és az első predstavoenie nem bináris. ez skolkougodnoichnoe (legfeljebb három). de mindkét reprezentációk 16. tirazryadnye

és mi a szám, meg tudja mondani?


> Mi az a szám, meg tudja mondani?

Természetesen tudok:
Egész egész szám. Tartomány -2147483648..2147483647. A változó Integer foglal memória 4 bájt (32 bit). Her bit formátum: A legjelentősebb bit - jele a szám, a fennmaradó biteket (31 db) - magát a számot.

Ennyi. Integer - egy típust. leírja a változó és a Hex - Ez a nézet azt mutatja, a változó. Köztük nincs kapcsolat. Most mi van a karakterlánc?


> Most mi karakterlánc?

amely leírja egy string változót

SW. Mester, kérem fordítsa pár utalás a dokkok, ahol elolvashatja a UTB jó! Szintén érdekes, hogy megértsék!
Köszönöm.

Hogy szenved.
Vannak még jó funkciók Delphi - BinToHex és HexToBin.
Minden rendben.


> Vannak még jó funkciók Delphi - BinToHex és HexToBin.

Van egy sor Hex helyett BinToHex

Ismét van vonal Hex

var buf. tömb byte;
# XA0; # XA0; s. string;
Buf: = s;.

A már lefordított, de csak egy string egy byte tömböt, kivéve, ha a fordító nem sérteget ellen.

Valamint hogyan lehet felismerni a szimbóluma a kódot?
(Fordított folyamat Fct Chr)


> [46] AL1 # XA0; (22.11.04 16:21)

> Nos, és hogyan lehet felismerni a szimbóluma a kódot?

Ord ()

Kedves Mester, valahogy kiderült tele eredmények:

írja ArrayOfByte = tömb byte;

funkció Hex2StrHex (BUF tömb byte; BufLength egész ..): String;
var i. integer;
kezdődik
Eredmény: = "";
I: = 1-től BufLength csinálni
kezdődik
# XA0; Eredmény: = Eredmény + formátum ( "% x", [Buf [I]])
végén;
végén;

funkció Hex2Str (BUF tömb byte; BufLength egész ..): String;
var i. integer;
kezdődik
Eredmény: = "";
I: = 1-től BufLength csinálni
kezdődik
# XA0; Eredmény: = Eredmény + Chr (BUF [I]);
végén;
végén;

funkció StrHex2Hex (. SHex string; SHexLength integer.): ArrayOfByte;
var
I: integer;

funkció Str2Hex (S. string; SLength integer.): ArrayOfByte;
var
I: integer;

kezdődik
ha (SLength> 0), akkor
kezdődik
# XA0; SetLength (Eredmény, SLength);
# XA0; I: = 0: Kiváló (Eredmény) do
# XA0; Eredmény [I]: = Ord (S [i + 1]);
végén;
végén;

Ellenőrizze kérjük, valami baj van?

És még egy kérdés: hogyan lehet bejelenteni function (): tömb byte, nem bejelentett egy új típusa: típus ArrayOfByte = array of byte.


> [48] AL1 # XA0; (22.11.04 17:13)

És miért az átviteli függvényében hosszúságú tömbök és vonósokra, amikor (a hosszúság) lehet meghatározni egy függvény?

abban az esetben, egyetemesség. hirtelen elfelejti lerövidíti a vonalat, miután dolgozik vele. vagy egy puffer tegyük fel, hogy meg kell enni, és kezelni darab, és nem az egész. -)


> [50] AL1 # XA0; (22.11.04 17:28)

De valami lehet zavaros és adja át, például a szám több mint lehetséges. És ez lesz a kiút külföldön.

> [48] AL1 # XA0; (22.11.04 17:13)


> Funkció Hex2StrHex (BUF tömb byte; BufLength egész ..): String;

> Az I: = 1-től BufLength csinálni

Error. Buf: tömb Byte - Ez egy nyílt tömb. Számukra, mint a dinamikus, elem kezdő sorszám nullára. Itt IMHO, jobb helyett a tömb byte a már bejelentett begépelt - egy dinamikus tömb - ArrayOfByte. De index továbbra is nulla, így azt tanácsolom, itt 1 helyett és BufLength használni Low (BUF) és nagy (BUF).

Memória: 0,83 MB
Idő: 0.079 c




Kapcsolódó cikkek