Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Jak zobrazit soubor v HEXA !?

Klasický BMP soubor, který vypadá nějak takto:

[http://img264.imageshack.us/img264/9990/bmpsvetrmo3 .png]

Prosím pokud umíte programovat jak mohu programově zpracovat tento soubor, abych neviděl prostý text,
ale měl to komplet v jiné soustavě ? (to co vidíme kromě těch zmatin úplně napravo)

Stačí kód jak to převést do desítkové nebo šestnáctkové soustavy, když už to mám někde načtené.

//Edit

V C++ samozřejmě

Předmět Autor Datum
Použi PSPAD. JaFi tam urobil HEX editor :-D:-D.
Len tak 07.02.2007 22:55
Len tak
JaFi je sice machr, ale tohle musí dělat můj program :.( :-D:-D:-D Jsu vul: soubor.Read(delka, 4)…
Flash_Gordon 07.02.2007 22:57
Flash_Gordon
vsak to musim pri otvoreni suboru(neviem aky jazyk pouzivas) urcit ci sa to ma nacitat ako normalny…
IgorK 07.02.2007 23:02
IgorK
Dobré, dobré. Snad to nějak dám dohromady. Mám bolesti hlavy. :-/
Flash_Gordon 07.02.2007 23:04
Flash_Gordon
ok, uz som si vsimol, ze si tam doplnil C++. takze, ak pouzivas fstream, tak v konstruktore nastav i…
IgorK 07.02.2007 23:18
IgorK
Najjednoduchšie nejako takto: #include <iostream> #include <fstream> int main() { std::ifstream inp…
los 07.02.2007 23:41
los
Teda nejak takto, mám tu problém: // založíme instanci dialogu pro soubory (funguje OK) wxFileDialo…
Flash_Gordon 08.02.2007 00:07
Flash_Gordon
Zkusím tipnout (syntaxi Céčka neovládám): pokoušíš se soubor otevřít jako textový a BMP má někde v h…
JoDiK 08.02.2007 08:11
JoDiK
Znak s kódem nula - 0x00 - v Céčku ukončuje řetězec. Na čtvrtém bytu souboru právě ta nula je. Řetěz…
krok 08.02.2007 09:07
krok
Naalokuj si buffer potrebnej velkosti (napr. WinAPI fciou) a pouzi WinAPI fciu ReadFile na nacitanie… poslední
MM.. 08.02.2007 13:37
MM..

Najjednoduchšie nejako takto:

#include <iostream>
#include <fstream>

int main() {
	std::ifstream input("subor.in", std::ios::in | std::ios::binary);
	char c;

	std::cout << std::hex;

	while (input.get(c))
		std::cout << (unsigned)c << " ";

	return 0;
}

Teda nejak takto, mám tu problém:

// založíme instanci dialogu pro soubory (funguje OK)
wxFileDialog dlg(this, wxT("nadpis"), wxT(""), wxT(""), wxT("Text files (*.bmp)|*.bmp"), wxOPEN | wxFILE_MUST_EXIST);
// definujeme si nějaké řetezce
wxString m_sCurrentFile, polozka, soubor;
// Načteme nějaký soubor
	if (dlg.ShowModal()==wxID_OK)
	{
        m_sCurrentFile = dlg.GetPath();
	WxMemo1->LoadFile(m_sCurrentFile);
        }
// načtení souboru proběhne OK, ale načte se pouze toto:  "BMf"
// Zbytek souboru (to je ten maglajz vpravo) se bohužel ignoruje ! Proč ?!
// poznámka: WxMemo1  je objekt něco jako "textarea" v HTML, pracuje spolehlivě (jen zobrazuje načtený obsah)

Naalokuj si buffer potrebnej velkosti (napr. WinAPI fciou) a pouzi WinAPI fciu ReadFile na nacitanie suboru. Na otvorenie suboru WinAPI fciu CreateFile. Preco pouzivas wx somariny ak ich pouzivat nevies?

Do textu si potom mozes cez nejaku formatovaciu funkciu pridavat po bytoch (aj wx nezmysel string ma urcite nejaku formatovaciu fciu, prevod na hex zobrazenie bude IMHO cez %x vo format retazci).

... alebo pouzi obycajne fopen, v cykle fgetc, fclose.

Zpět do poradny Odpovědět na původní otázku Nahoru