|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » *Теория* | Как работать с двоичными данными? |
|
*Теория* | Как работать с двоичными данными?
|
Hijri
Сообщения: n/a |
помогите!!!!!! ни как не могу понять как работать с двоичными данными, например хочу конвертировать из двоичных данных в шеснатитиричные воспользовался борландской процедурой bintohex результат совсем не тот.
|
|
Отправлено: 00:34, 12-07-2006 |
Старожил Сообщения: 260
|
Профиль | Отправить PM | Цитировать А какой результат нужен? Поподробней пожалуйста.
|
------- Отправлено: 11:58, 12-07-2006 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 68
|
Профиль | Отправить PM | Цитировать Вообще нас в институте учили так чтобы перевести Ч2 в Ч16 надо взять число, например, 11011(в двоичной)и разделить её на тетрады справа на лево(по четыре элемента)если в крайней левой нехватает цифер дополнить нулями затем каждую тетраду записать в 16 числами. например число 11011-получается левая тетрада 0001 правая 1011-отсюда разлогая по разрядам первую тетраду там понятно что 1 вторую 1 +(1+1)+(0)+(1+1+1+1+1+1+1+1)=11 что есть B(в 16)затем пишем что получилось от первой тетрады слева а то что получилось от правой справо и получаем 1B
|
Отправлено: 14:49, 12-07-2006 | #3 |
Пользователь Сообщения: 71
|
Профиль | Отправить PM | Цитировать готовые процедуры врядли есть.. проще самому ручкам написать, "bezumes" написал как))
|
Отправлено: 20:58, 12-07-2006 | #4 |
Hijri
Сообщения: n/a |
например в двочном формате "1111" в шеснацатиричном будет "F" у меня получается 313500 не могу понять как действует это процедура BINTOHEX обьясните пожалуйста
|
|
Отправлено: 23:38, 12-07-2006 | #5 |
Пользователь Сообщения: 68
|
Профиль | Отправить PM | Цитировать нашел с помощью рамблера может поможет
Из двоичной в шестнадцатеричную (BinToHex) 1. Далеко не самый оптимальный способ, зато наглядно демонстрирующий алгоритм конвертирования из двоичного представлением числа в шестнадцатеричную: исходная строка разбивается на тетрады (части по 4 символа) и заменяется на соответствующие им элементарные шестнадцатеричные числа. function BinToHex(const BinStr: string): string; const BS: array[0..15] of string[4] = (?0000?,?0001?,?0010?,?0011?,?0100?,?0101?,?0110?,?0111?,?1000?,?1001?, ?1010?,?1011?,?1100?,?1101?,?1110?,?1111?); HS: array[0..15] of Char = (?0?,?1?,?2?,?3?,?4?,?5?,?6?,?7?,?8?,?9?, ?A?,?B?,?C?,?D?,?E?,?F?); var s,h: string; i: integer; Err: boolean; begin Result := ??; s := BinStr; if (s[Length(s)] = ?b?) or (s[Length(s)] = ?B?) then Delete(s, Length(s), 1); // дополнение строки нулями, пока ее длина не кратна 4 while (Length(s) mod 4) <> 0 do s := ?0? + s; while Length(s) > 0 do begin Err := true; h := Copy(s,1,4); Delete(s,1,4); for i := 0 to 15 do if h = BS then begin Result := Result + HS; Err := false; break; end; if Err then begin Result :=??????; Exit; end; end; end; А так эту задачу решили программисты Borland (модуль Classes): procedure BinToHex(Buffer, Text: PChar; BufSize: Integer); const Convert: array[0..15] of Char = ?0123456789ABCDEF?; var I: Integer; begin for I := 0 to BufSize - 1 do begin Text[0] := Convert[Byte(Buffer[i]) shr 4]; Text[1] := Convert[Byte(Buffer[i]) and $F]; Inc(Text, 2); end; end; |
Последний раз редактировалось bezumes, 13-07-2006 в 15:14. Отправлено: 10:25, 13-07-2006 | #6 |
Hijri
Сообщения: n/a |
как действует первый код я знаю меня интересует борландский вариант вот мой код
Цитата:
|
|
Отправлено: 00:18, 14-07-2006 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Как вы утешали бы себя если компьютер сгорит со всеми вашими данными? | R.M.L | Флейм | 23 | 30-06-2009 00:59 | |
Прочее - Как организовать обмен данными об ip ? | mitiya | Сетевые технологии | 10 | 27-02-2009 11:28 | |
как заставить SGH-E390 работать как следует? | nightmare95 | Мобильные ОС, смартфоны и планшеты | 6 | 21-11-2008 17:55 | |
Как настроить два компа через RJ-45, для обмена данными (Windows XP HOME). | webFR | Сетевые технологии | 2 | 18-05-2008 18:32 | |
Как производить обмен данными и материалами в режиме он-лай | Drony | Хочу все знать | 3 | 30-06-2007 23:49 |
|