Diskuze: Systém zápisu stringu do souboru
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
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 ?
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)
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)
Zobrazeno 4 zpráv z 4.