tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
348
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Meldur Meldur ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    143
    Hallo Leute,


    fast ist es mir ein wenig perinlich, aber ich hänge hier total. Ich habe zwei HEX-Zahlen und muss sie in einem Byte - in je einem Nibble - eintragen. Leider habe ich noch nie auf ein Halbbyte in C# (oder überhaupt) zugegriffen. Hat jemand eine kurze Anleiung?

    Vielen Dank!
    Meldur
     

  2. #2
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Hi!

    Also wenn du gezielt gewisse Bits aus einer Zahl haben willst, holst du dir diese am Besten mit einer Bitmaske raus.

    In deinem Fall, für die Nibbles brauchst du eine, bei der 4 Bits gesetzt sind, also "1111"(binär) was 0xf entspricht.
    Wenn du diese Maske mit einer Zahl bitweise Und verknüpfst, erhältst du die ersten 4 bits. Um dann an die nächsten Bits zu kommen, shiftest du die Zahl um 4 nach rechts, und veknüpfst wieder mit der Maske.

    Hier ein kleines Beispiel:

    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    class Program
    {
        static void Main(string[] args)
        {
            int number = 2346;
            int mask = 0xf;
            int nibble;
     
            for (int i = 0; i < 32; i+=4)
            {
                nibble = (number >> i) & mask;
     
                for (int j = 3; j >= 0; j--)
                {
                    Console.Write((nibble >> j) & 0x1);  // Ausgabe des Nibbels in Binärdarstellung
                }
                Console.WriteLine();
            }
     
            Console.ReadLine();
        }
    }

    lg,..
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  3. #3
    Avatar von colblake
    colblake colblake ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Ort
    dresden
    Beiträge
    214
    Hallo,
    mein Vorredner hat recht. Du musst mit BitShift und Masken arbeiten. Hier eine einfache Lösung:

    Zur Erklärung:

    "(zahl_1 << 4)" versetzt die letzten 4 Bit um 4 Bit in die "mitte". Aus 0x0000000a wird 0x000000a0
    "& 0x000000f0" ist nur zur Sicherheit , dass auch wirklich jetzt die letzten Bits Nullen sind.
    und " | zahl_2 " setzt die 2.Zahl in die letzten 4 bits ein.

    Code csharp:
    1
    2
    3
    4
    5
    6
    
    int zahl_1 = 0xa;
    int zahl_2 = 0x9;
     
    int  resultat = ((zahl_1 << 4) & 0x000000f0) | zahl_2;
     
    Console.WriteLine(String.Format("{0:X}",resultat));

    Gruß
    Col.Blake
    Geändert von colblake (10.03.10 um 10:59 Uhr)
     
    Über so viele Sachen wächst Gras , man kann keiner Wiese mehr trauen.

  4. #4
    Meldur Meldur ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    143
    aha - alles klar - ich denke jetzt habe ich es. Danke!
     

Ähnliche Themen

  1. Chipkarten beschreiben
    Von TimN im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 12.06.07, 20:52
  2. Vorhandene PDF beschreiben?
    Von medico im Forum PHP
    Antworten: 1
    Letzter Beitrag: 13.12.06, 12:44
  3. SWT - Table beschreiben
    Von nikfun im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 14.04.05, 10:10
  4. Schwer Zu Beschreiben, SORRY
    Von TheLuCKer im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 19.01.05, 23:58
  5. CG-RAM beschreiben
    Von hippotalamus im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 14.04.04, 20:24