Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2011, 16:52   #1
artem611
Пользователь
 
Регистрация: 21.09.2010
Сообщений: 40
По умолчанию Перевести строчку в битовое представление

Всем доброго времени суток. Скажите, можно ли в Паскале какое либо сообщение типа стринг перевести в битовое представление, те последовательность 0 и 1? Можно ли потом обратно перевести из 0 и 1 в текст?
Если можно, то подскажите, пожалуйста, в виде кода как, а то весь нет уже перырыл, никак не найду как это сделать(

Всем заранее спасибо
artem611 вне форума Ответить с цитированием
Старый 08.04.2011, 17:00   #2
artem611
Пользователь
 
Регистрация: 21.09.2010
Сообщений: 40
По умолчанию

P.S. а можно как-нибудь после создания темы изменить ее название(тк опечатался)
artem611 вне форума Ответить с цитированием
Старый 08.04.2011, 17:10   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
function char2bin(c: char): string;
var
  b, i: Byte;
  result: string;
begin
  b := Ord(c);
  result := '';
  //
  for i := 1 to 8 do begin
    //
    if ($80 = (b and $80)) then
      result := result + '1'
    else
      result := result + '0';
    //
    b := b shl 1;
  end;
  //
  char2bin := result;
end;
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 08.04.2011, 17:13   #4
artem611
Пользователь
 
Регистрация: 21.09.2010
Сообщений: 40
По умолчанию

veniside
Большое пребольшое спасибо.

Не могли бы вы еще пояснить мне, что делает вот эта часть кода: %80

А так с кодом я вроде бы разобрался. Еще раз спасибо

Последний раз редактировалось artem611; 08.04.2011 в 17:43.
artem611 вне форума Ответить с цитированием
Старый 08.04.2011, 18:40   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Не могли бы вы еще пояснить мне, что делает вот эта часть кода: %80
1) не %80, а $80

2) с долларом вначале записываются шестнадцатеричные константы. таким образом $80 = десятичное 128 (можете везде вместо $80 смело написать 128 будет то же самое).

3) самое главное свойство этого числа - это байт, у которого в старшем разряде 1 (единица)
т.е. если это число записать в двоичном виде получим:
10000000

4) используется эта константа в качестве битовой маски:
т.е. наш символ (в переменную b записывает код этого символа) поочередно делается побитное логическое И с маской.
если в нашем числе в старшем разряде единица то после AND получим число с единицей в старшем разряде, т.е. $80
если получили - значит у нас единица, если нет (получится ноль) - значит в старшем разряде числа у нас был нолик.
Потом число сдвигаем побитно на один разряд влево и повторяем операцию.

Кстати, сравните с таким кодом (делает ровно то же самое):
Код:
  for i := 1 to 8 do begin
    if (b and 01) = 01 then
      result := '1' + result
    else
      result := '0' + result;
    b := b shr 1;
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.04.2011, 19:15   #6
artem611
Пользователь
 
Регистрация: 21.09.2010
Сообщений: 40
Хорошо

Serge_Bliznykov

Спасибо за подробное объяснение
artem611 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести 1 строчку из паскаля на си++ Drago56 Помощь студентам 1 19.12.2010 11:25
Представление матриц. Mushu Общие вопросы C/C++ 8 07.06.2010 12:44
представление группировки Domanoff БД в Delphi 13 07.04.2010 18:09
Как с поиощью hiew вставить в файл строчку, "раздвинуть" файл и вставить туда строчку? barand Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 28.06.2008 10:58