![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Представить байт в двоичном виде [D5, D6, D7, D2005, NT4, 2000, XP, 2003]
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спасут отца русской демократии