|
|
|
Байты и биты
|
|||
|---|---|---|---|
|
#18+
Люди подскажите как из какогото файла считать первый байт в виде F5 или D2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 16:41 |
|
||
|
Байты и биты
|
|||
|---|---|---|---|
|
#18+
однако есть тонкий момент. виндос различает бинарные и текстовые файлы (Билл вы%№нулся). т.е. если ты читаешь файл как текстовый, и встретился символ '\0', например, то это означает конец файла. где-то в опциях open или read есть соотв. мудификатор. также есть соотв мудификатор потоков в классах fstream C++ в виндосе. как он называется, я забыл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 17:19 |
|
||
|
Байты и биты
|
|||
|---|---|---|---|
|
#18+
Ладно хотябы как файл считать, ну скажем в CString или в char* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 18:27 |
|
||
|
Байты и биты
|
|||
|---|---|---|---|
|
#18+
// читаем первый байтик 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; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 19:08 |
|
||
|
Байты и биты
|
|||
|---|---|---|---|
|
#18+
чета я не понял причем сдесь билл. байты они и в африке байты(хотя на некоторых машинах они и не 8 бит). #include <windows.h> int main() { int hf=_lopen("c:\\pagefile.sys",0); unsigned short b; _lread(hf,&b,1); _lclose(hf); } как думаете будет работать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 20:07 |
|
||
|
Байты и биты
|
|||
|---|---|---|---|
|
#18+
NewYear писал:// ура! у нас есть первый байт! давайте его радостно распечатаем!!! cout << "x" << "0123456789ABCDEF"[(FirstByte >> 4) & 0x0F] << "0123456789ABCDEF"[(FirstByte >> 0) & 0x0F] << endl; Довершим растление малолетних: Код: plaintext 1. :) А если серьезно, то ведь можно было обойтись и стандартными средствами: Код: plaintext 1. 2. 3. или Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 01:03 |
|
||
|
Байты и биты
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 10:06 |
|
||
|
Байты и биты
|
|||
|---|---|---|---|
|
#18+
У меня была похожая проблема, мне надо было из дбф файлов прочитать 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[=- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 17:54 |
|
||
|
Байты и биты
|
|||
|---|---|---|---|
|
#18+
Кстати, я видел у тея там написано, 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[=- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 18:01 |
|
||
|
Байты и биты
|
|||
|---|---|---|---|
|
#18+
HUNTER низнаю как тебя и благодарить, это же то что мне надо, СПАСИБО. Я так думаю, что тема закрыта С П А С О Б О!!!! ВАМ ХЛОПЦЫ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 18:05 |
|
||
|
Байты и биты
|
|||
|---|---|---|---|
|
#18+
2 Hunter_eea Зачем столько телодвижений? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 18:53 |
|
||
|
Байты и биты
|
|||
|---|---|---|---|
|
#18+
Потому как бывают проблемы автор писал: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[=- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2003, 09:55 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32300517&tid=2035865]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
34ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 323ms |

| 0 / 0 |
