14.12.2018, 05:16 [+3 UTC]
в нашей команде: 3 223 чел. | участники онлайн: 3 (рекорд: 19)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.58 (11.12.2018)

Общие новости:
13.12.2018, 11:36

Форум:
08.12.2018, 14:26

Последний вопрос:
14.12.2018, 04:32

Последний ответ:
14.12.2018, 02:52

Последняя рассылка:
13.12.2018, 23:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
04.06.2010, 16:36 »
Мироненко Николай Николаевич
Спасибо Вам большое smile [вопрос № 178811, ответ № 261871]
05.09.2011, 12:59 »
Valyukevich Yury
просто изумительно! [вопрос № 183967, ответ № 268149]
13.06.2011, 12:21 »
Посетитель - 358526
Спасибо за подсказку! [вопрос № 183605, ответ № 267708]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 825
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 149
Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 19

Перейти к консультации №:
 

Консультация онлайн # 193648
Раздел: • Assembler
Автор вопроса: andreosh (Посетитель)
Отправлена: 05.10.2018, 17:53
Поступило ответов: 1

Здравствуйте !
На ассемблере не программировал. Решил выбрать FASM.
Есть текстовый файл с символами типа "00 0f ab 01..." (шестнадцатиричные коды) надо записать в бинарный файл на FASM для Windows x86. функция(имятекстфайла, имябинарногофайла)
Кому не лень. Подскажите, или дайте ссылку с примерами.

Состояние: Консультация закрыта

Ответ # 276748 от Лысков Игорь Витальевич (Старший модератор)

Здравствуйте, andreosh!
Задача решена автором вопроса средствами PHP


Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 09.10.2018, 18:12

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 193648
Kdsfofwe21
1-й класс

ID: 402218

# 1

= общий = | 05.10.2018, 19:50 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

для уточнения, у Вас есть файл, "файл.txt" в котором есть готовый код с директивами который подойдёт для fasm?
Потому что возможно Вы, судя по написанному, описываете уже скомпилированный бинарный(.bin) или екзешный файл (.exe) в хекс формате, который мог бы пригодится Вам на этапе работы с отладчиком.

andreosh
Посетитель

ID: 402327

# 2

= общий = | 05.10.2018, 20:14 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Kdsfofwe21:

Просто я перевел с помощью PHP-функций бинарный файл в текстовый с 16-ми кодами типа "6f 3a 01 aa ..", чтоб передать его через POST-запрос своему веб-серверу. А теперь мне надо, чтоб из такого текстового вновь собрать бинарный. С помощью PHP пока не получается, может из-за плохого знания PHP (его функции коды в символы преобразует, а мне надо просто байты в файл записать). Решил сделать на FASM. К тому же я потом могу сделать DLL-ку и подключать ее.

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 3

= общий = | 05.10.2018, 23:00 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
andreosh:

Вы хоть сами поняли, что тут написано:

© Цитата: andreosh
Есть текстовый файл с символами типа "00 0f ab 01..." (шестнадцатиричные коды) надо записать в бинарный файл на FASM для Windows x86. функция(имятекстфайла, имябинарногофайла)

На сколько я понял, Вам нужно !6-ти битный код текстового файла скопировать в бинарный файл.
smile
функция 56h прерывания 21h переименовывает файл, но это в том случае, когда оригинал файла Вам не нужен.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 4

= общий = | 05.10.2018, 23:17 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
andreosh:

© Цитата: andreosh
чтоб передать его через POST-запрос своему веб-серверу

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

Клиент- Серверу: "БЕЛИБЕРДА"
Сервер-> Клиенту: "Ты уверен"
Клиент- Серверу:"Таки Да"

Вам это не напоминает 17-ть мгновений?

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

andreosh
Посетитель

ID: 402327

# 5

= общий = | 06.10.2018, 11:13 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Зенченко Константин Николаевич:

Что-то вы все усложняете. Я уже решил эту задачу на PHP без 16-ичных кодов, так как они бинарный файл увеличат в 2 раза. Мой алгоритм увеличивает в 1.5 раз бинарный файл. Привожу исходники:
(Правда, имеется костыль: почему-то уничтожаются первые 2 байта, приходится добавлять, например, при раскодировании
архива rar, $param="Ra". Может потом исправлю этот глюк, но пока и с ним можно работать.)
Суть алгоритма в том, что бинарные коды переводятся в символы, допустимые для передачи через POST-запрос.
Затем раскодируется вновь в бинарный файл. Так есть ограничение на размер файла 320000 байта (при большем размере
функция выдает ошибку)

Может кто-нибудь улучшит алгоритм. Но для моих нужд и так сойдет.

Код (PHP) :: выделить код
  function KodirTextFileToBinarFile($fileread,$filewrite,$param)  {     
       $data = $param.file_get_contents($fileread,false,NULL,1,320000);   $counter = strlen($data);    
     $file = fopen($filewrite, 'wb');  $char1 = "";
     for($i = 0; $i < $counter; ++$i) { $char2 = $data[$i]; echo $char2;
        if (($char1=="!") or ($char1=="\"")) { if (($char1=="!") and ($char2=="!")) { $CharOut = 256; }   
                  else { if ($char1=="\"") { fwrite($file, pack("C",ord($char2)+80)); }  else { if  ($char1=="!") { 
                                 fwrite($file, pack("C",ord($char2)-35)); 
                       } } $char1 = ""; }   
                   }
        else { if (($char2=="!") or ($char2=="\"")) { $char1 = $char2; } else { fwrite($file, $char2); } }
        
      }  
      fclose($file); 
      }
   function KodirBinarFileToTextFile($fileread,$filewrite)  {  $StrOut = ""; $CharOut = "";
      $data = file_get_contents($fileread, NULL, NULL, 1, 320000);     $counter = strlen($data); 
      for($i = 0; $i < $counter; ++$i) { $char = ord($data[$i]);  $CharOut = byteToChar($char); 
              $StrOut = $StrOut.$CharOut;    }
      file_put_contents($filewrite, $StrOut);        
       }
   function byteToChar($byte1) { $simv = '_'; 
        if ((($byte1>34) and ($byte1<123)) or (($byte1>191) and ($byte1<256))) { 
              $simv = chr($byte1);  } else {  if ($byte1<35) { $simv = "!".chr($byte1+35); } else { 
                   if ($byte1==256) { $simv = "!!"; }  else { $simv = "\"".chr($byte1-80); } }  }  return $simv; 
       }

smile
Но данная задача изначально решалась по не знанию о наличие функции base64 в PHP. По сути, произошло "изобретение велосипеда", причем худшего качества, так как base64 увеличивает файл на 30%, а мой алгоритм на 50% smile

• Отредактировал: andreosh (Посетитель)
• Дата редактирования: 10.10.2018, 08:28

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.13990 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.58 от 11.12.2018