Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Перекодировка файла в бинарный вид Добавлено: 09.06.12 15:41  

Автор вопроса:  Алексей | ICQ: нету 
Всем добра!
Вопрос стоит в следующем: как осуществить перекодирование файла(любого) в бинарный (двоичный) файл. Например, у меня есть файл вуаля.jpg. Мне его надо перекодировать в вуаля.bin.
И ещё кое-что. Либо у меня руки не из плеч растут, либо действительно что-то не так. Давно не был на этом сайте, а потому подзабыл пароль. Решил восстановить. Вписал почту, всё как надо. На почту пришло следующее:
??? ?????? ????????????? ????????????? ? ???????? ?????????? ? ????? ??????????? ?? ?????? ? ? ??????? beta-???????????? VBNet.
????????!
???????? ???? ??????????????? ??????:
?????: ?????? 95
??????: *********

??????? VBNet!

Вместо звёздочек правда пароль, но вот вопросы так и были. Думайте сами, решайте сами.

Ответить

  Ответы Всего ответов: 15  

Номер ответа: 1
Автор ответа:
 Алексей



ICQ: нету 

Вопросов: 6
Ответов: 42
 Профиль | | #1 Добавлено: 09.06.12 15:46
Нашёл кое-что на эту тему, но как воспользоваться не знаю.
http://ru.wikipedia.org/wiki/Base64

Ответить

Номер ответа: 2
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 09.06.12 16:18
Фактически любой файл является двоичным, потому что на низком уровне данные представлены в виде нулей и единиц.

Ответить

Номер ответа: 3
Автор ответа:
 Алексей



ICQ: нету 

Вопросов: 6
Ответов: 42
 Профиль | | #3 Добавлено: 09.06.12 16:31
Это я знаю... НО вот как получить эту последовательность нулей и единиц понять не могу. Уверен, что можно это сделать, т.к. на CD диски, скажем, записывается именно такая последовательность. Ассамблировать?

Ответить

Номер ответа: 4
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #4 Добавлено: 09.06.12 22:52
Не нужно ничего ассамблировать.

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

В .NET это можно сделать, например, функцией System.IO.File.ReadAllBytes.

Ответить

Номер ответа: 5
Автор ответа:
 Алексей



ICQ: нету 

Вопросов: 6
Ответов: 42
 Профиль | | #5 Добавлено: 10.06.12 10:05
Artyom,спасибо, помогло.

Ответить

Номер ответа: 6
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #6
Добавлено: 10.06.12 12:04
Если вопрос ставится так, то делать не нужно вообще ничего, поскольку вуаля.jpg изначально бинарный. Если под словом "бинарный" подразумевать наличие символов (байтов) не могущих быть отображенными на экране. А вот как раз Base64 позволяет кодировать бинарные файлы в текстовом виде. Естественно с увеличением объёма выходных данных, поскольку текстовых символов меньше.
Так работает передача двоичных файлов в теле е-мэйла, поэтому кидать файлы по почте всегда считал извращением:)

Ответить

Номер ответа: 7
Автор ответа:
 Алексей



ICQ: нету 

Вопросов: 6
Ответов: 42
 Профиль | | #7 Добавлено: 10.06.12 19:37
Помогло да не совсем... методом рид ол байтс я получаю именн байты. Вопрос я получаю их в виде 0 и 1? Если нет, то как сделать так чтобы я получал файл именно в таком представлении из 0 и 1. ПОчему собственно задаюсь этим вопросом.. проинициализировав всё необходимиое, вызвал этот метод, считал байты. А вот посмотрть что же я считал у меня не получилось.

Ответить

Номер ответа: 8
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #8
Добавлено: 10.06.12 20:47
гг. зуб даю - вся информация в компьютере представляется в виде нулей и единиц. Массив байтов [06, 14, 11] - это то же, что и [0x06, 0x0E, 0x0B] и то же, что [00000110, 00001110, 00001011].
И хранится это всё в виде нулей и единиц, различия только в способах которыми я это записал в виде текста. Речь идёт о необходимости преобразовать бинарные данные в текст определённого формата?

Ответить

Номер ответа: 9
Автор ответа:
 Алексей



ICQ: нету 

Вопросов: 6
Ответов: 42
 Профиль | | #9 Добавлено: 11.06.12 07:44
Winand, речь идёт о том, чтобы представить любой файл так, как его видит машина на низком уровне, т.е. в виде 0 и 1, и вывести это представление пользователю. Условный пример:
1.есть файл 1.txt
2.В файле запись
1221

Мы считываем файл массивом байт. Потом переводим всё это дело в систему счисления с основанием 2. Выдаём пользователю. На выходе получается(опять же условно, как точно получится я не знаю, не считал):
0000000100000110000001100100111001000110

Ответить

Номер ответа: 10
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #10 Добавлено: 11.06.12 11:16
  1.             byte[] data = new byte[] { 243, 179, 50 };
  2.  
  3.             BitArray array = new BitArray(data);
  4.  
  5.             for (int i = 0; i < data.Length; i++)
  6.             {
  7.                 for (int bitPos = 7; bitPos >= 0; bitPos--)
  8.                 {
  9.                     int value = array[i * 8 + bitPos] ? 1 : 0;
  10.  
  11.                     Console.Write(value);
  12.                 }
  13.  
  14.                 Console.Write(" ");
  15.             }

Ответить

Номер ответа: 11
Автор ответа:
 Алексей



ICQ: нету 

Вопросов: 6
Ответов: 42
 Профиль | | #11 Добавлено: 11.06.12 15:30
Artyom честно говоря.... ничё не понял. Комменатрии плз, и если можно не консольно.

Ответить

Номер ответа: 12
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #12 Добавлено: 11.06.12 16:27
Запускай код, что он делает, разбирайся как это работает.

Ответить

Номер ответа: 13
Автор ответа:
 Алексей



ICQ: нету 

Вопросов: 6
Ответов: 42
 Профиль | | #13 Добавлено: 11.06.12 16:38
Artyomв какой среде? Если запустить как консоль-приложение выдаёт кучу ошибок. Если виндовс-формс то не меньше. Вы на какой версии записали? Я то на vb 2008 сижу... Мне если чесно не ясна одна строка
  1.    int value = array[i * 8 + bitPos] ? 1 : 0;
А если ещё точнее то её часть
  1. ? 1 : 0;

Ответить

Номер ответа: 14
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #14 Добавлено: 11.06.12 16:48
Это C# 3.0. Поищи в интернете конверторы в VB.NET

  1. dim Value As Integer = IIf(array(i*8+bitPos),1,0)

Ответить

Номер ответа: 15
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #15 Добавлено: 12.06.12 01:21
IIf некашерно
троллю :-D

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам