Ausgabeproblem BYTE und WORD



  • Also, ein BYTE = 8 Bit unsigned Integer
    WORD =16 Bit unsigned Integer

    also kann ich doch in ein Byte 09 schreiben und in ein WORD 0009 richtig?
    Wenn ich nun aber in das BYTE 09 schreiben will nimmt er davon nur die 0 und schreibt die 9 in das WORD. WARUM?

    #include <windows.h>
    #include <iostream> 
    #include <stdio.h>
    
    using namespace std;
    
    BYTE bFC;
    WORD wFC;
    
    int main()
    {
    cout<<"Bitte geben sie bFC ein :"<<endl;
    cin>>bFC;
    cout<<"Bitte geben sie wFC ein :"<<endl;
    cin>>wFC;
    cout<<hex<<(int)bFC<<" "<<hex<<(int)wFC<<endl;
    return TRUE;
    }
    

    Er gibt mir ja für bFC auch einen zweistelligen Wert aus aber wo bitte schön kommt die 3 her? Also bei obigen Beispeil ist die Ausgabe

    30 9
    

    Kleines Konsolenanwendungsprogramm was mein Problem beschreibt.



  • ähm was soll bei dir 09 sein?

    den 09 ist ja oktal ( wegen führender 0 )
    wenn du aber die dezimal zahl 9 eingebn willst, dann musst du die auch dezimal eingeben und nicht oktal. ok wenn du dezimal 5 eingibst ist es egal ob du 05 oder 5 eingibst aber bei 9? hmm



  • Ah, da mit der 0 wußte ich nicht, es geht um hex Zahlen im Format 0x09
    auch .

    cin>>hex>>bFC
    

    Aber das Problem ist immer noch, selbst wenn ich nur 1 eingebe für die Zahl schreibt er mir bei der Ausgabe immer noch eine 3 davor, wo kommt die her?



  • BYTE ist ein typedef auf unsigned char, d.h. cin liest ein Zeichen ein. Nicht 0, sondern '0'. Lies als WORD ein und weise den Wert hinterher einem BYTE zu.



  • Hmm, bnutze einfach als Datentyp WORD, das funzt.
    Das Problem lag daran das ich in der Hilfe einfach nach "8 Bit unsigned integer gesucht habe" daraufhin kam BYTE als ergebnis, ich habe aber nicht nur C++ drauf sondern das gesamte DeveloperStudio=> Byte ist wirklich ein 8 Bit unsigned Intger allerdings in Java oder VisualBasic, nicht in C++.
    Besser zwei mal hinsehen 😮 😮

    Aber es wäre trotzdem interesant wie ich dem WORD später ein BYTE zuweisen kan, hast du da vielleicht ein CodeSchnipsel für mich?



  • bigborre schrieb:

    Byte ist wirklich ein 8 Bit unsigned Intger allerdings in Java oder VisualBasic, nicht in C++.

    Doch, auch in C++ ist char (genau wie seine signed/unsigned-Varianten sowie deren typedefs) ein Ganzzahltyp. Das Problem in deinem Fall ist bloß, dass char für die Ein- und Ausgabe als Zeichen, nicht als Zahl benutzt wird.

    Aber es wäre trotzdem interesant wie ich dem WORD später ein BYTE zuweisen kan, hast du da vielleicht ein CodeSchnipsel für mich?

    Einfach mit = zuweisen.



  • Ja funktioniert, dank dir;


Anmelden zum Antworten