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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2015, 12:07   #1
z768
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 45
По умолчанию Строковый массив в байт ?


Заранее извиняюсь...
Есть строка типа '00000010'.
Нужно перевести в байт.

Может у кого есть готовая функция ?
z768 вне форума Ответить с цитированием
Старый 06.05.2015, 13:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Есть: http://www.programmersforum.ru/showp...4&postcount=36
Годится? Аль слишком сложно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.05.2015, 13:33   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

может так попроще?
Код:
function Bin2Integer(aStr: string): integer;
var
  i, Rez : longint;
begin
  Rez := 0;
  for i := 1 to length(aStr) do 
    Rez := Rez * 2 + ord(aStr[i]) - ord('0');
  Bin2Integer := Rez  
end;

begin
	WriteLn(Bin2Integer('000000110'));
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.05.2015, 13:51   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

в synautil есть BinToInt. Можно воспользоваться или подсмотреть
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.05.2015, 14:05   #5
z768
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 45
По умолчанию

Всем огромное спасибо.

Я пока ждал ответа, кое чего успел наваять, проверю результаты
потом свой код выложу, только прошу сильно не пинать если чего "безобразное" получилось.

Ну вот перепиленный вариант из предложенного, он верхний, и мой - оба рабочие...
Код:
function CompressByte(A, B, C, D: Byte): Byte;
var
  S: string;
  i: Integer;
begin
  Result := $00;
  S := IntToHex(A, 2) + IntToHex(B, 2) + IntToHex(C, 2) + IntToHex(D, 2);
  for i := 1 to Length(S) do
    Result := Result * 2 + ord(S[i]) - ord('0');
  CompressByte := Result;
end;


function CompressByte(A, B, C, D: Byte): Byte;
const
  Num: array [0..15] of string = ('0000', '0001', '0010', '0011',
                                  '0100', '0101', '0110', '0111',
                                  '1000', '1001', '1010', '1011',
                                  '1100', '1101', '1110', '1111');
var
  H: string;
  L: string;
  i: Integer;
begin
  H := '';
  L := '';

  H := IntToHex(A, 2) + IntToHex(B, 2);
  L := IntToHex(C, 2) + IntToHex(D, 2);
  for i := Low(Num) to High(Num) do
    begin
      if H = Num[i] then
        H := IntToHex(i, 1);
      if L = Num[i] then
        L := IntToHex(i, 1);
    end;

  Result := StrToInt('$' + H + L);
end;
На входе функции у меня массив из 4-х байт, которые нужно преобразовать в один..
Ну типа сжатия... Выложил так как у меня в программе.
Еще раз всем спасибо за внимание.

Последний раз редактировалось z768; 06.05.2015 в 16:22. Причина: дополнение
z768 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив из 9 байт расматривая его как массив 72 бит подсчитать число нулей в этом массиве. noob asm Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 16.04.2012 19:04
Строковый массив impulsgraw C# (си шарп) 4 19.11.2011 12:43
Динамический строковый массив Uh-Oh Помощь студентам 1 25.09.2011 02:13
Массив байт в Visual C# free6878 Помощь студентам 2 01.03.2011 18:54
Как конвертировать массив символов в массив байт davinci C++ Builder 6 30.10.2010 18:09