powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Байты и биты
13 сообщений из 13, страница 1 из 1
Байты и биты
    #32300194
Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди подскажите как из какогото файла считать первый байт в виде F5 или D2.
...
Рейтинг: 0 / 0
Байты и биты
    #32300264
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
однако есть тонкий момент. виндос различает бинарные и текстовые файлы (Билл вы%№нулся). т.е. если ты читаешь файл как текстовый, и встретился символ '\0', например, то это означает конец файла.

где-то в опциях open или read есть соотв. мудификатор.
также есть соотв мудификатор потоков в классах fstream C++ в виндосе. как он называется, я забыл.
...
Рейтинг: 0 / 0
Байты и биты
    #32300391
Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ладно хотябы как файл считать, ну скажем в CString или в char*
...
Рейтинг: 0 / 0
Байты и биты
    #32300450
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
// читаем первый байтик

unsigned char FirstByte;
{
// open the file
ifstream TheFile ("путь к какому-то файлу" , ios::nocreate | ios::binary );
// здесь test for fail

// здесь читать
TheFile.get(FirstByte);
if(TheFile.eof())
{
// нету там нихрена
throw ();
}
}
// ура! у нас есть первый байт! давайте его радостно распечатаем!!!

cout << "x" << "0123456789ABCDEF"[(FirstByte >> 4) & 0x0F]
<< "0123456789ABCDEF"[(FirstByte >> 0) & 0x0F] << endl;
...
Рейтинг: 0 / 0
Байты и биты
    #32300517
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чета я не понял причем сдесь билл. байты они и в африке байты(хотя на некоторых машинах они и не 8 бит).

#include <windows.h>

int main()
{
int hf=_lopen("c:\\pagefile.sys",0);
unsigned short b;
_lread(hf,&b,1);
_lclose(hf);
}
как думаете будет работать?
...
Рейтинг: 0 / 0
Байты и биты
    #32300602
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewYear писал:// ура! у нас есть первый байт! давайте его радостно распечатаем!!!

cout << "x" << "0123456789ABCDEF"[(FirstByte >> 4) & 0x0F]
<< "0123456789ABCDEF"[(FirstByte >> 0) & 0x0F] << endl;

Довершим растление малолетних:

Код: plaintext
1.
std::cout <<  "0x"  << ((FirstByte >>  4 ) & 0x0F)[ "0123456789ABCDEF" ] 
 << ((FirstByte >>  0 ) & 0x0F)[ "0123456789ABCDEF" ] << std::endl;

:)

А если серьезно, то ведь можно было обойтись и стандартными средствами:

Код: plaintext
1.
2.
3.
// STL
std::cout << std::setfill('0') << std::setw( 2 ) << std::hex;
std::cout << FirstByte;


или

Код: plaintext
1.
// LIBC
printf( "%02x" , FirstByte);
...
Рейтинг: 0 / 0
Байты и биты
    #32300801
Tracer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewYear
>однако есть тонкий момент. виндос различает бинарные и текстовые файлы (Билл вы%№нулся).

Гоните, батенька. API-шная функция Windows'a -
BOOL ReadFile(
HANDLE hFile, // handle to file
LPVOID lpBuffer, // data buffer
DWORD nNumberOfBytesToRead, // number of bytes to read
LPDWORD lpNumberOfBytesRead, // number of bytes read
LPOVERLAPPED lpOverlapped // overlapped buffer
);

Не путайте с сишными библиотеками, ноги которых растут из Unix'a.
...
Рейтинг: 0 / 0
Байты и биты
    #32300947
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tracer
Верно, thanx.
...
Рейтинг: 0 / 0
Байты и биты
    #32302044
Hunter_eea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня была похожая проблема, мне надо было из дбф файлов прочитать 29 байт, там лежит кодовая страница ентого файла, я ее решил так(собственно вся функция):

CString GetCodePageDBF(CString sFileName)
{
CString szOut= _T("");
LPTSTR pData;
CString str;
CFileException e;
CFile file((_bstr_t)sFileName, CFile::modeRead);
char s[81];
int bytesRead = file.Read(s, 80);
s[bytesRead] = 0;
//CString message
pData= s;

szOut.Format( "%02x", (unsigned char)pData[29] );
szOut.MakeUpper();
file.Close();
return szOut;
}
возвращает 69 если 866 страница
и С9 если 1251
--
Best regards by
-=]HUNTER[=-
...
Рейтинг: 0 / 0
Байты и биты
    #32302060
Hunter_eea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, я видел у тея там написано, F5 вот я и подумал, что из dbf файлов, тогда я думаю тебе подойдет описание 0 байта:
0x03 FoxBase+/dBase III plus, no memo
0x83 FoxBase+dBase III plus, with memo
0x03 FoxBase/dBase IV, no memo
0xF5 FoxPro with memo
0x8B dBase IV with memo
и так всякая фихня до 33 байта


--
Best regards by
-=]HUNTER[=-
...
Рейтинг: 0 / 0
Байты и биты
    #32302068
Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HUNTER низнаю как тебя и благодарить, это же то что мне надо, СПАСИБО.
Я так думаю, что тема закрыта

С П А С О Б О!!!! ВАМ ХЛОПЦЫ
...
Рейтинг: 0 / 0
Байты и биты
    #32302147
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Hunter_eea

Зачем столько телодвижений?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
int GetDBFCodePage(const char *name)
{
   std::ifstream f(name, std::ios::in | std::ios::binary);
   if( !f  || !f.seekg( 29 , std::ios::beg) )
        return  0 ;
   char code_page =  0 ;
   f.get(code_page);
   return code_page;
}
...
Рейтинг: 0 / 0
Байты и биты
    #32302498
Hunter_eea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому как бывают проблемы
автор писал:int GetDBFCodePage(const char *name)
{
std::ifstream f(name, std::ios::in | std::ios::binary);
if( !f || !f.seekg(29, std::ios::beg) )
return 0;
char code_page = 0;
f.get(code_page);
return code_page;
}

Делал так, но не помню, в какой-то базе, точьно не скажу (но какая-то еще досовая, то что клинет на клипере(клиторе не помню как точьно)был это 100 пудов ), вылетало. Да ладно работает ведь

--
Best regards by
-=]HUNTER[=-
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Байты и биты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]