NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
HONZ4
Člen
Avatar
HONZ4:7.3.2017 19:46

Zdravím vás,
potřeboval bych pochopit systém formátu dat stringu zapsaného pomocí BinaryWriteru .Write(string). Koukám na to v hex editoru, a nějak ten systém nemůžu pochopit. A asi i blbě hledám na internetu, protože taky nemůžu nic najít.

 
Odpovědět
7.3.2017 19:46
Avatar
jan.pichl
Člen
Avatar
jan.pichl:7.3.2017 21:59

Při použití takto writeBinay

FileStream writeStream ;
    try
    {
        writeStream = new FileStream("c:\\csharp.net-informations.dat", FileMode.Create);
        BinaryWriter writeBinay = new BinaryWriter(writeStream);
        writeBinay.Write("CSharp.net-informations.com binary writer test");
        writeBinay.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show (ex.ToString());
    }

To u mě vytvoří normální textový soubor v kodování CP1250. Ten tvůj string ve write() je skutečně string ? Není to náhodou nějaký jiný objekt ?

 
Nahoru Odpovědět
7.3.2017 21:59
Avatar
HONZ4
Člen
Avatar
Odpovídá na jan.pichl
HONZ4:7.3.2017 22:27

na počátku uložených dat se zapíše počet znaků. Tady je to jednoduché 46/0x2E, protože je to krátký řetězec. Mě se ale jedná i o dlouhé řetězce (např. délka ASCII 70000 se zapíše jako: F0A204)

 
Nahoru Odpovědět
7.3.2017 22:27
Avatar
HONZ4
Člen
Avatar
HONZ4:18.3.2017 16:13

tak jsem se k tomuto problému dostal, a našel jsem řešení.

Příklad výpočtu pro délky 70000 znaků:

0xF0 0xA2 0x04 = 240 162 4

162 - 128 = 34;
4 * 128 = 512;
512 + 34 = 546;
546 * 128 = 69888;
240 - 128 = 112;
69888 + 112 = 70000;

Funguje to takto:
pokud je aktuální byte > 128, pak ten následující označuje počet násobků 128, a to co je v aktuálním byte nad 128 se připočítá k hodnotě.
(potřeboval jsem to pro dokumentaci formátu souboru)

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
18.3.2017 16:13
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.