Re[14]: проблема с символом '\0'
От: dabeat_bf Украина http://alexmogurenko.com
Дата: 09.09.10 14:16
Оценка:
Здравствуйте, Антипа, Вы писали:

А>Обратите внимание, dabeat_bf, что это он так работает с исходными открытыми данными. Но топикстартер никак не хочет показать кусок кода, в котором А>он определяет длину считанных зашифрованных данных.


я так понимаю что именно так он и определяет длину... считывает в массив, а потом для массива вызывает strlen... логично что длина будет наблюдатся описанная проблема
Re[9]: проблема с символом '\0'
От: irbis3003  
Дата: 09.09.10 14:35
Оценка:
Здравствуйте, Антипа, Вы писали:

А>Здравствуйте, irbis3003, Вы писали:


I>>is.gcount();

А>Точно? У меня есть подозрения, что вы использовали функции для работы с '\0'-завершёнными строками.

I>>Ну а вообще — нетрудно выгрузить полученные байты снова в файл или мемо и посмотреть что считали.

А>Вы это делали? Покажите код.

А>Я проверил, все работает так, как и должно:


А>
А>#include <fstream>
А>#include <iostream>
А>//#include "stdafx.h"

А>using namespace std;

А>int main(int argc, char *argv[])
А>{
А>  static unsigned char InBlock[16];

А>  ifstream is("binary.bin", ios::binary);  
А>  is.read((char*) InBlock, 16);
А>  cout << is.gcount() << " bytes read\n";
А>  is.close();

А>  for (int i=0; i<16; i++) cout << (int)InBlock[i] << " ";
А>  cout << "\n";
А>  return 0;
А>}
А>


А>
>>bin-read.exe binary.bin
А>16 bytes read
А>49 50 51 52 53 54 55 56 57 0 97 98 99 100 101 102 
А>


А>Файл binary.bin я сделал руками в 16-ричном редакторе. Там в середине нулевой символ.


Сделал так же (хотя до этого мой код мало чем от этого отличался), все получилось. Весьма благодарен!
Re[10]: проблема с символом '\0'
От: _niko_ Россия  
Дата: 09.09.10 19:23
Оценка:
Здравствуйте, irbis3003, Вы писали:

I>Сделал так же (хотя до этого мой код мало чем от этого отличался), все получилось. Весьма благодарен!


dabeat_bf указал же на ошибку в коде (strlen):

InBlockLen = strlen(InBlock)*sizeof(char);
Re[11]: проблема с символом '\0'
От: irbis3003  
Дата: 10.09.10 00:19
Оценка: :)
Здравствуйте, _niko_, Вы писали:

__>Здравствуйте, irbis3003, Вы писали:


I>>Сделал так же (хотя до этого мой код мало чем от этого отличался), все получилось. Весьма благодарен!


__>dabeat_bf указал же на ошибку в коде (strlen):


__>
__>InBlockLen = strlen(InBlock)*sizeof(char);
__>


Дело не в этом — вместо длины строки в виде переменной я пробовал руками писать ее значение.
Честно говоря, даже сам не совсем понял что именно в коде изменилось, что привело к работоспособности.
Буду разбираться.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.