Ints von 0-255 in unsigned char



  • Moin,

    gegooglelt hab ich schon, aber nicht passendes gefunden, auch die SuFu hab ich benutzt.

    Ich habe Int Werte von 0-255 und möchte die in ein unsigned char verwandeln, und später wieder in ein Int umwandeln. Habt ihr ne Idee wie ich das ambesten machen könnte?

    also:

    Int u Char
    0 = 00000000 (0x00)
    255 = 11111111 (0xff)

    MfG
    Philipp Maricek



  • Edit: unsigned war gewünscht

    int i = 234;
    unsigned char c = i;
    


  • cooky451 schrieb:

    int i = 234;
    char c = i;
    

    Moin,

    das geht so einfach, ich dachte da müsse man was mit Bitmanipulation machen.

    Danke

    Philipp



  • cooky451 schrieb:

    int i = 234;
    char c = i;
    

    Ist es nicht implementierungsabhängig, ob char signed oder unsigned ist? Oder gilt das nur für C++?



  • dennis.cpp schrieb:

    Ist es nicht implementierungsabhängig, ob char signed oder unsigned ist? Oder gilt das nur für C++?

    char ist eig immer signed soweit ich weiß, hatte das unsigned nur überlesen.



  • Default ist signed, unsigned muss explizit angegeben werden.
    Das hindert manche Compilerbauer aber nicht daran, eigene Defaults vorzugeben.



  • Der Standard gibt nicht vor, ob char vorzeichenbehaftet ist oder nicht. Ferner sind char, signed char und unsigned char explizit drei unterschiedliche Typen.

    ISO/IEC 9899:1999 6.2.5 (15) schrieb:

    The three types char, signed char, and unsigned char are collectively called the character types. The implementation shall define char to have the same range, representation, and behavior as either signed char or unsigned char.35

    35 CHAR_MIN, defined in <limits.h>, will have one of the values 0 or SCHAR_MIN, and this can be used to distinguish the two options. Irrespective of the choice made, char is a separate type from the other two and is not compatible with either.



  • Dachte ich doch, sowas gelesen zu haben...


Log in to reply