ПредишенСледващото

Хекс до String, и обратно

Майстор да ми каже как да конвертирате от Hex да String, както и обратното. Имам такава определена последователност от байтове: Buf: масив от Байт

Имам тази красива Buf преведете низ, който съдържа HEX формат му
с. низ. където дължина на въдицата, равна на завоя на дължина Buf * 2 и обратно!

Може би има някои компоненти с помощта на които би било лесно да се работи с HEX?

Вижте (функцията за форматиране)


> Pat

И как да се работи с нея? кухненски отпадъци формат не е решение [0]

AL1 # XA0; (21.11.04 18:35) # XA0;
Не е необходимо, хексан вече String, съответно, и обратно.
Но защо в темата си е вече говорим за байта.


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

А работа като: Формат ( "% х", [IntegerValue]).


> Майстор да ми каже как да конвертирате от Hex да String
> И обратно.

1) От HEX String (или по-скоро от цяло число, байт или други типове цели числа в HEX низ формат)
# XA0; а) функция IntToHex (стойност: цяло число; цифри: цяло число): низ;
# XA0; б) формат (вече бе обяснено predіduschih мнения)

2.) Обратно
# XA0; функция StrToInt (конст S: низ): цяло число;

например: # XA0; MyInteger: = StrToInt ( "$" + MyString);

където дължина на въдицата равна на дължината превърне Buf * 2 и обратно

Да, мисля, че разбирам. Всеки байт трябва да бъдат представени като две шестнадесетични цифри. След това можете да направите следното:

Не бях прав, а не
IntToHex (Buf [Ь])
както и писмено SergP
IntToHex (Buf [Ь], 2)
Въпреки, че има и проблем с водеща нула. Формат вероятно без да не мога да направя, че ти пиша директно да конвертирате

не ми трябва малко повече:
Имам Buf: масив от байтове, която има 6 байта: 6D6F757365 и бих искал да е: String получена от etogo дума мишка в SHex: низ получи "6D6F757365". (Мой ред дължина от 5 знака и SHex 10 знака)

Т.е. трябва да знам как мога да конвертирате от Buf на String и StringinHex и обратно!


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

Нещо, което не трябва в зимната градина, където има 6 байта, виждам само 5.


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

Но в общи струни дръжки в цикъл от 2 знака, всяко парче се превръща в Byte използване StrToInt, а след това можете да получите характер, съответстващ на кода, като се използват Chr ().

Какво мъжът ви се приземи? Просто ми кажете отговора и всичко останало :)

Var
# XA0; Buf: масив от байтове;
# XA0; S, SHex: низ;
# XA0; I: Integer;

започвам
# XA0; S: = "";
# XA0; SHex: = "";
# XA0, защото: = Low (Buf) към висока (Buf) направи
# XA0; започне
# XA0; # XA0; S: = S + Chr (Buf [I]);
# XA0; # XA0; SHex: = SHex + формат ( "% х", [Buf [I]])
# XA0; край
край.

Нещо като това, chtoli?

функция HerZnaetChtoToString (Var MyBuf: TMyArray): низ;
Var
# XA0; и: цяло число;
започвам
# XA0; SetLength (резултат висока (MyBuf) Ниска (MyBuf) 1);
# XA0, защото: = ниско (MyBuf) към висока (MyBuf) направи
# XA0; резултат [I-ниска (MyBuf) 1]: = CHR (MyBuf [Ь]);
приключи;

Документът не се опита. Може и да греша някъде в нишката.

В IntToHex няма проблем с водеща нула.

Благодаря.

> Започнете. край

И все пак можете да кажете кода за обръщане на процеса?
(Канап в Buf)


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


> И все пак можете да кажете кода за обръщане на процеса?
> (От String в Buf)

От String - от S или SHex?

Ако искаш да кажеш SHex, след което можете да направите следното:

Var
# XA0; Buf: масив от байтове;
# XA0; SHex: String;
# XA0; I, Len: Integer;

Работи, но за оптималност - Не знам. Искам да спя, размишлявайки лошо.

Послепис Харесва ми Балтийско 7.

Благодаря. Той изглежда да се работи!
Този въпрос:
докато (I <= High(Buf)) do

както и правото да се сложи правилния размер Buf?


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


> И как да се създаде желания размер веднага Buf?

Buf желания размер е разположен в ред: ". SetLength (Buf, Len DIV 2)"

Послепис Можете дори да Балтийско 3.

време на цикъла може да бъде заменен за, т.е. вместо това:


> Хм. Не да ме види една бира. - (

Това ли е по пощата! Държава? Сити. -)

Не, аз не мога да видя. Малко вероятно е, че той nastolko дебели фини намеци :) Той се разбира, че не може да разбере.


> Той самият не мога да разбера нещо.

Аз не съм пил до точката на себе си, за да не разбере. -)

А какво да кажем превръщането Hex в низ, и обратно - разрови купчина документи. навсякъде в слайд UTB obyasnyaetsya на. Наистина няма примери. и малко, за да изчистите :-( Може ли някой да ми каже къде съм всичко за UTB добро четиво Аз ще бъда благодарен -?).


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

Сега всички съвети само след пълното заплащане :-)

16-битово представяне на данни.
Обхват от 0x00 до 0xFF
(Ако междинно съединение, след това 0-255)

На първо място, не това не е 16-битово представяне на данните. Това представяне на числото 16 в шестнадесетично число система. 16-битово представяне на фигура 3, когато тя се записва в 16 бита на нещо. например
0000000000000003
или
0000000000000101

Ключовият момент "представяне". Могат да представляват само хора. За стандартен процесор, тя изглежда като "не съществува." Той ми пука за това, което е там, 16-битов представителство, представителство в 16-шестнадесетично число система. Ти в училище не са научени как да се преведат от една счетоводна система към друга нали?


> Не се изучава в училище как да се прехвърлят от една система на изчисляване
> Другата нали?

Дори и като съм учил! Ние наваксат и отново преподава. -)


> например
> 0000000000000003
> или
> 0000000000000101

Това двоично представяне на данните. -)
3 в число - UTB 0x03 в хексан

Ти показах това, което не е най-малко 16 и първата predstavoenie двоичен представителство. то skolkougodnoichnoe (повече от три). но и двете от тези постъпки 16-ти tirazryadnye

и това, което е цяло число, можеш ли да ми кажеш?


> Какво е цяло число, можеш ли да ми кажеш?

Разбира се, че може да:
Цяло число число. Range -2147483648..2147483647. променлива тип число на заема памет на 4 байта (32 бита). Нейното малко формат: Най-важният бит - знак за броя, останалите битове (31 броя) - на самия номер.

Това е всичко. Цяло число - тип. описване на променливата и Hex - Това мнение показва променлива. Между тях няма връзка. Сега това, което е най-String?


> Сега какво String?

тип, който описва низ променлива

SW. Учителю, моля обърнете няколко препратки към доковете, където можете да прочетете за благото UTB! Също така е интересно да се разбере!
Благодаря.

Това страдате.
Има и големи възможности в Делфи - BinToHex и HexToBin.
Всичко работи добре.


> Има и големи възможности в Делфи - BinToHex и HexToBin.

Имам един низ в шестнадесетичен вместо BinToHex

За пореден път имам линия Hex

Var Buf. масив от байт;
# XA0; # XA0; S. низ;
Buf: = S.

Преведен, но само един низ в масив от байтове, освен ако компилаторът не обиждам срещу.

Както и как да се признае, символ на код си?
(Reverse процес Fct Chr)


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

> Е и как да се признае, символ на код си?

Ord ()

Уважаеми Учителю, аз някак се обърна пълен с резултати:

Типове ArrayOfByte = масив от байт;

функция Hex2StrHex (Buf масив от байт; BufLength число ..): String;
Var аз. цяло число;
започвам
Резултат: = "";
за I: = 1 до BufLength направи
започвам
# XA0; Резултати: = Резултати + формат ( "% х", [Buf [I]])
приключи;
приключи;

функция Hex2Str (Buf масив от байт; BufLength число ..): String;
Var аз. цяло число;
започвам
Резултат: = "";
за I: = 1 до BufLength направи
започвам
# XA0; Резултати: = Резултати + Chr (Buf [I]);
приключи;
приключи;

функция StrHex2Hex (SHex низ; SHexLength число..): ArrayOfByte;
Var
I: Integer;

функция Str2Hex (S. низ; SLength число.): ArrayOfByte;
Var
I: Integer;

започвам
ако (SLength> 0), тогава
започвам
# XA0; SetLength (Резултат, SLength);
# XA0; защото: = 0 до висока (Резултат) направи
# XA0; Резултати [I]: = Ord (S [Ь + 1]);
приключи;
приключи;

Проверете моля, нещо не е наред?

И още един въпрос: как да обявим функция (): масив от байтове, които не са обявени на нов тип: тип ArrayOfByte = масив от байтове.


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

И защо в предавателната функция на масиви дължина и струнни, когато те (дължина) може да се определи в рамките на една функция?

в случай на универсалност. изведнъж забрави скъси линията, след като е работил с нея. или в буфер предполагам, че ще трябва да се яде и да се справят с парче, а не цялото. -)


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

Но нещо трябва да се бъркат и да мине, например, броят на повече от възможно. И това ще бъде начин за излизане в чужбина.

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


> Функция Hex2StrHex (Buf масив от байт; BufLength число ..): String;

> За I: = 1 до BufLength направи

Грешка. Buf: масив от Байт - Това е отворен масив. За тях, както и за най-динамични, елемент номерация започва от нула. Тук, IMHO, по-добре да се замени масив от байтове към вече обявените сте написали - динамичен масив - ArrayOfByte. Но индекс все още ще бъде нула, така че аз ви посъветва тук вместо 1 и BufLength използвайте Low (Buf) и висока (Buf).

Памет: 0.83 MB
Време: 0.079 гр

Свързани статии

Подкрепете проекта - споделете линка, благодаря!