MMC/SD karte (Ulrig Radig) datei grösse berechnung

OP #832078
Schon gefunden dank wiki books!

Rechtsshift >>

Verschiebt den Inhalt einer Variable bitweise nach rechts. Bei einer 
ganzen nicht negativen Zahl entspricht eine Verschiebung einer Division 
durch 2n und Abschneiden der Nachkommastellen(falls vorhanden), wobei n 
die Anzahl der Verschiebungen ist. Das Ergebnis ist 
implementierungsabhängig, wenn der zu verschiebende Wert negativ ist.

Beispiel:

y = x >> 1;
x y
01010111 00101011
OP #832092
nehmen wir jetzt an tmp ist ein int. dann kann ich ja immer nur volle 
dateien einlesen. d.h. 4096 byte, 2048, 32768...
richtig?

Was ist wenn ich eine datei einlesen möchte die 4350 byte hat?

wie kann ich sowas realisieren?

Weiss es jemand?
Es sind doch mit sicherheit leute hier die eine SD karte schon mal 
angesprochen haben mit einem MC. könnt ihr mir sagen wie ihr das 
realisiert habt?

Bedanke mich im vorraus
#832111
Der Grosse wrote:
> Kann mir jemmand erklären was genau dieser befehl hier macht?
> wobei size die Grösse der datei ist.
>
> tmp = (Size >> 9) + 1;

Ich tippe mal: Die Blockanzahl ausrechnen, die für eine Datei benötigt 
wird.(bei Blockgröße von 512 Byte)

Size>>9 entspricht einer Ganzzahldivision durch 512.
Dann wird noch 1 dazu addiert.

Beispiel:
Dateigröße 768 Byte

tmp = (768 >> 9) + 1
tmp =      1     + 1
tmp =         2

stimmt!


Sonderfall:
Dateigröße ist ein Vielfaches von 512 Byte
Beispiel:

Dateigröße 1024 Byte

tmp = (1024 >> 9) + 1
tmp =      2      + 1
tmp =          3

stimmt nicht, denn es werden nur 2 Blöcke benötigt


Gruß
LORIO

EDIT:

Ein Integer kann jede beliebige Ganzzahl aufnehmen, die innerhalb des 
(unsigned / signed) Integer-Wertebereichs liegt.

Beim GCC sind das bei
signed: 2^16 ... 0 ... 2^16 - 1
unsigned: 0 ... 2^32 - 1
OP #832120
Da hast du es ja schon erwähnt

>Dateigröße 1024 Byte

>tmp = (1024 >> 9) + 1
>tmp =      2      + 1
>tmp =          3

>stimmt nicht, denn es werden nur 2 Blöcke benötigt

wie mache ich es den dass es in beiden fählen passt?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.