Хекс до 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 гр
Свързани статии