Создавал тему в болталке, но там както несложилось. Теперь создаю тут так как код пишу на С++ в linux. Вобщем надо разобрать торрентфайл и получить из него хеш сумму файла, тобишь поле pieces. Из спецификации Файл торента открываю так Code: ifstream ftor (fname.c_str(), ifstream::in); читаю построчно в цыкле через Code: getline(ftor, line); конкатенирую все считанный строки и вывожу на экран, получаю следующее: - В начале идет все как по спецификации все поля их значения в обычном символьном виде. - После начала поля pieces: идет нечетабельная хрень - В конце опять читабельный строки по спецификации. Некак немогу понять как правильно считать чтобы вместо "нечетабельной хрени" получить коректную хешсумму. Или может эту нечетабельную хрень чемто конфертировать надо ?
Попробуй конвертировать строку с хеш-суммой в число, например функцией atoi. Кстати, число в строке 16-ричные.
Nikituki сударь вы вообще о чем? функция atoi считывает числа в новую переменную до первой буквы, это вообще не преобразования =) даже более скажу к SHA1 это не приемлимо так как смотрим на пример хеша da39a3ee 5e6b4b0d 3255bfef 95601890 afd80709 )
маленькая заминка, строл хочет чтобы ей передали строку читабельную, тобишь с нормальными символами. А у меня "нечетабельная хрень" %) делаю Code: cout<<strtol(string(STR_SR, 0, 20).c_str(), &err,16)<<endl; cout<<string(STR_SR, 0, 20).c_str()<<"\n"; STR_SR это "вся нечетабельная хрень, а мы знаем что она состоит из последовательно записанных 20байтовых SHA1 хешсумм, поэтому беремен первый 20 символов (байт) и в итоге получаем в консоли Code: 0 ��a�Kލt^L�$��(pc PS. поправил
хм.. мб попробовать из файла считывать не в строку, а сразу в int? или открывать файл не в обычном режиме, а в двоичном...