Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » *Теория* | Как работать с двоичными данными?

Ответить
Настройки темы
*Теория* | Как работать с двоичными данными?
Hijri


Сообщения: n/a

Профиль | Цитировать


помогите!!!!!! ни как не могу понять как работать с двоичными данными, например хочу конвертировать из двоичных данных в шеснатитиричные воспользовался борландской процедурой bintohex результат совсем не тот.

Отправлено: 00:34, 12-07-2006

 

Аватара для Gerdewski

Старожил


Сообщения: 260
Благодарности: 28

Профиль | Отправить PM | Цитировать


А какой результат нужен? Поподробней пожалуйста.

-------
Скажи точно. Сколько вешать в граммах?


Отправлено: 11:58, 12-07-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для bezumes

Пользователь


Сообщения: 68
Благодарности: 1

Профиль | Отправить 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
Благодарности: 1

Профиль | Отправить PM | Цитировать


готовые процедуры врядли есть.. проще самому ручкам написать, "bezumes" написал как))

Отправлено: 20:58, 12-07-2006 | #4

Hijri


Сообщения: n/a

Профиль | Цитировать


например в двочном формате "1111" в шеснацатиричном будет "F" у меня получается 313500 не могу понять как действует это процедура BINTOHEX обьясните пожалуйста

Отправлено: 23:38, 12-07-2006 | #5


Аватара для bezumes

Пользователь


Сообщения: 68
Благодарности: 1

Профиль | Отправить 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;
Hijri Ну че получилось? если нет выложи свой код

Последний раз редактировалось bezumes, 13-07-2006 в 15:14.


Отправлено: 10:25, 13-07-2006 | #6

Hijri


Сообщения: n/a

Профиль | Цитировать


как действует первый код я знаю меня интересует борландский вариант вот мой код
Цитата:
var
b:array[byte] of char;
t:array[byte] of char;
begin
b:='';t:='';
StrpCopy(b,edit1.Text);
bintohex(b,t,sizeof(b));
label1.Caption:=t;

Отправлено: 00:18, 14-07-2006 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » *Теория* | Как работать с двоичными данными?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как вы утешали бы себя если компьютер сгорит со всеми вашими данными? 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




 
Переход