Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Представить байт в двоичном виде [D5, D6, D7, D2005, NT4, 2000, XP, 2003]


Страницы:   1 2

Beginer2 ©   (2006-09-01 18:32:00) 

Какой функцией можно получить байт в двоичном представлении? Например имеем байт ASCII с кодом 65, нужно получить его в виде: 01001101 (двоичный код приведен от балды). Необязательно (а скорее даже желательно) сделать не на делфи, а на TP7


Beginer2   (2006-09-01 19:45:00) [21]

Можно еще один тупой вопрос на эту тему? А как сделать обратное преобразование? :)


DevilDevil   (2006-09-01 19:45:00) [22]

> Palladin ©   (01.09.06 19:15) [5]

Я бы даже сказал, так покрасивее будет:

Function ByteToBin(b:Byte):String;
Var
i:Integer;
Begin
SetLength(Result,8);
For i:=0 to 7 Do
If BOOL(b and (1 shl i)) Then Result[8-i]:='1' Else Result[8-i]:='0';
End;


Ну в крайнем случае с нулём сравнить


Beginer2   (2006-09-01 19:34:00) [23]


> не расстраивайся, только не реви
>
> Function ByteToBin(b:Byte):String;
> Var
> i:Integer;
> Begin
> SetLength(Result,8);
> For i:=0 to 7 Do
>  If (b and (1 shl i))=(1 shl i) Then Result[8-i]:='1' Else
> Result[8-i]:='0';
> End;


Спасибо, работает. Честно говоря был уверен что есть готовая функция.


Zeqfreed   (2006-09-01 19:25:00) [24]

function ByteToBinaryStr(b : Byte) : ShortString;

function GetBitAndShift() : Char;
const
 ConvTbl : array[0..1] of Char = ('0', '1');
begin
 Result := ConvTbl[Byte(b and 1)];
 b := b shr 1;
end;

var
 i : Integer;
begin
 Result := '00000000';
 i := 8;
 repeat
  Result[i] := GetBitAndShift();
  Dec(i);
 until (b = 0) or (i = 0);
end;


Palladin   (2006-09-01 19:15:00) [25]

нет формулы, есть алгоритм


> только вот я не знаю этой формулы

не расстраивайся, вот ссылочка... пробелы лишние только удали...

http://www.google.ru/search?hl=ru&q=%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC+%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0+%D0%B2+%D0%B4%D1%80%D1%83%D0%B3%D1%83%D1%8E+%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%83+%D0%B8%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=


> Что, нет готовой функции?

не расстраивайся, только не реви

Function ByteToBin(b:Byte):String;
Var
i:Integer;
Begin
SetLength(Result,8);
For i:=0 to 7 Do
 If (b and (1 shl i))=(1 shl i) Then Result[8-i]:='1' Else Result[8-i]:='0';
End;


Степан   (2006-09-01 19:14:00) [26]

Ну а если мозг совсем "нехачу работать", то можно вот так сделать!

function ByteToBin(Value: Byte): String;
var
 I, TempVal: Byte;
begin
 Result := '';
 for I := 0 to 7 do begin
   TempVal := Value;
   TempVal := TempVal shl I;
   TempVal := TempVal shr 7;
   Result := Result + IntToStr(TempVal);
 end;
end;


Fay   (2006-09-01 19:12:00) [27]

2 Beginer2
1) См. [1]
2) Используй мозги - многим помогает.


Beginer2   (2006-09-01 19:09:00) [28]

Что, нет готовой функции? С трудом верится. Но даже если и нет - есть формула перевода чисел из одной системы в другую?... только вот я не знаю этой формулы


Sam Stone   (2006-09-01 19:06:00) [29]

Цикл, andи shlспасут отца русской демократии


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо