Integer in Byte konvertieren...möglich?



  • Schönen Nachmittag allerseits,

    meine Frage scheint auf den ersten Blick vielleicht etwas unüblich!

    Ich möchte einen Integer-Wert(32bit) in einen Byte-Wert(8bit) umwandeln, d.h. den Integer-Wert splitten oder so ähnlich! Ich habe bisher diesen Code-Ausschnitt, der mir aber nicht das gewünschte Ergebnis liefert!

    if (temp > 127)
    {
      mib[cnt] = Convert.ToByte(128 + (temp / 128));
      mib[cnt + 1] = Convert.ToByte(temp - ((temp / 128) * 128));
      cnt += 2;
      miblen++;
    }
    else
    {
      mib[cnt] = Convert.ToByte(temp);
      cnt++;
    }
    

    Code-Ausschnitt ist von SimpleSNMP!
    Im oberen Teil der if-Anweisung wird, denke ich, irgendwie versucht den Integer zu splitten, aber irgendwie klappt des nicht, da mir eine Exception geworfen wird :-(!

    Ich hoffe einer von euch hat eine Lösung für mich!
    Danke im Voraus!
    Grüße



  • S?nmp schrieb:

    Ich möchte einen Integer-Wert(32bit) in einen Byte-Wert(8bit) umwandeln, d.h. den Integer-Wert splitten oder so ähnlich!

    Was denn jetzt?

    int i = 42;
    
    byte b = (byte) i;
    //oder
    byte[] b = System.BitConverter.GetBytes(i);
    


  • S?nmp schrieb:

    ..., d.h. den Integer-Wert splitten oder so ähnlich! Ich habe bisher diesen Code-Ausschnitt, der mir aber nicht das gewünschte Ergebnis liefert!

    Woher weißt Du, dass das Ergebnis nicht gewünscht ist, wenn Du nicht sicher bist was der Code tun soll?

    Naja, eigentlich.... Obwohl ich auch nicht weiß was der Code tun soll, sieht er irgendwie falsch und unhübsch aus.

    S?nmp schrieb:

    Im oberen Teil der if-Anweisung wird, denke ich, irgendwie versucht den Integer zu splitten, aber irgendwie klappt des nicht, da mir eine Exception geworfen wird :-(!

    Mehr Input. Wie lautet die Meldung der Exception? In welcher Zeile?



  • bja schrieb:

    S?nmp schrieb:

    Im oberen Teil der if-Anweisung wird, denke ich, irgendwie versucht den Integer zu splitten, aber irgendwie klappt des nicht, da mir eine Exception geworfen wird :-(!

    Mehr Input. Wie lautet die Meldung der Exception? In welcher Zeile?

    In der Zeile

    mib[cnt] = Convert.ToByte(128 + (temp / 128));
    

    wird eine Exception geworfen, da 'temp' einen größeren Wert hat als der Maximalwert für 'byte', in meinem Beispiel ist 'temp' = 24700!

    bja schrieb:

    Woher weißt Du, dass das Ergebnis nicht gewünscht ist, wenn Du nicht sicher bist was der Code tun soll?

    Naja, eigentlich.... Obwohl ich auch nicht weiß was der Code tun soll, sieht er irgendwie falsch und unhübsch aus.

    Ich habe probiert, den Integer zu splitten und die resultierenden 4 Byte in das Array zu speichern! Es wurde keine Exception geworfen, aber ich bekam auch nicht das gewünschte Ergebnis :-(!

    Wo wir grade dabei sind (Snmp): Kennt ihr eine leicht handzuhabende .dll für Snmp?

    Danke für eure Mühe!



  • Eventuell das hier?

    byte1 = deinInteger & 0xFF;
    byte2 = deinInteger>>8 & 0xFF;
    byte2 = deinInteger>>16 & 0xFF;
    byte2 = deinInteger>>24 & 0xFF;
    




  • geeky schrieb:

    http://msdn.microsoft.com/en-us/library/system.bitconverter.getbytes.aspx ^^

    Warum einfach wenn es auch kompliziert geht?! 😉



  • geeky schrieb:

    http://msdn.microsoft.com/en-us/library/system.bitconverter.getbytes.aspx ^^

    Steht übrigens schon in der ersten Antwort.



  • oha - Ich bin scheinbar genauso blind wie andere hier 😉


Anmelden zum Antworten