Hallo,
ich möchte gerne bei einem Integer-Wert das High und Low-Byte auslesen. Stehe aber leider auf dem Schlauch...
--MfG akswift
Hallo akswift,
BitConverter-Klasse
herbivore
Wobei nen .Net Integer aber 32 Bit hat, von daher hast du eher High/Low Word und 4 Bytes.
Baka wa shinanakya naoranai.
Mein XING Profil.
Hallo talla,
das habe ich auch gedacht, aber letztendlich steht 'Integer-Wert' da und nicht 'int-Wert' oder 'Int32-Wert'. Also habe ich geschlossen, dass hier Int16 gemeint sein muss.
herbivore
Hehe, um kein Kommentar verlegen 🙂 Hast aber natürlich recht.
Baka wa shinanakya naoranai.
Mein XING Profil.
Eigendlich fehlt jetzt der Hinweis von Talla mit den Bitoperationen 😉
// textBox1.Text = "1000";
int test = Convert.ToInt16(textBox1.Text);
byte lb = (byte)(test & 0x00ff);
byte hb = (byte)((test & 0xff00) >> 8);
this.Text = hb.ToString() + ", " + lb.ToString();
Pat
edit: jetzt hab ichs gerafft mit dem code posten hier 😁
Original von MartinH
Eigendlich fehlt jetzt der Hinweis von Talla mit den Bitoperationen 😉
Lol. Da verkneift man es sich einmal und wird gleich drauf hingewiesen 🙂
Ich persönlich find des viel schneller als erstmal anzuschaun wie die BitConverter Klasse funktioniert, hab ich noch nie gebraucht das Ding und weiß deshalb noch net mal wie die arbeitet =) Aber eher aus Gewohnheit, muss net gut sein, alles auf die altmodische Art zu machen.
Baka wa shinanakya naoranai.
Mein XING Profil.
oder
int lb = test & 255;
int hb = (test / 256) & 255;
Pat
Hallo Pat,
wenn schon mit Division statt Shift, dann solltest du auch gleich den ganzen Weg gehen.
int lb = test % 256;
int hb = test / 256;
herbivore
Original von herbivore
Hallo Pat,wenn schon mit Division statt Shift, dann solltest du auch gleich den ganzen Weg gehen.
int lb = test % 256; int hb = test / 256;
herbivore
Hallo herbivore,
Ob man nun maskiert oder das Modulo nimmt kommt ja aufs Gleiche raus. Das nimmt sich nix. Ich seh da keinen halben oder ganzen Weg.
Gruss Pat
Hallo Pat,
die Bitoperationen bilden genauso eine Gruppe, die die arithmetischen Operationen. Der ganze Weg ist, nur arithmentische Operationen zu verwenden. Das finde ich so offensichtlich, dass es mich wundert, dass du es trotz Hinweis nicht gesehen hast.
Allerdings kommt Modulo und Maskieren nicht auf das gleiche heraus. Deshalb ist es wohl besser BitConverter zu verwenden. Der erspart einem solche Feinheiten.
herbivore
int mod = 0;
int and = 0;
for (int i = 0; i <= 65535; i++ )
{
mod = i % 256;
and = i & 255;
listBox1.Items.Add(mod.ToString() + ", " + and.ToString());
if (mod != and) MessageBox.Show("Ungleich");
}
Für mich gibt es das gleiche
Pat
Hallo Pat,
es ist dann nicht das gleiche, wenn du - wie hier vorausgesetzt - Int16 und dessen gesamten Wertebereich verwendest.
herbivore
Es ist doch auch viel einfacher die ganzen Bitoperationen in Hex durchzuführen,
da 4 Bit immer einer Hexziffer entsprechen.
Da liest sich der Code viel leichter.