Laden...

integer high und low byte

Erstellt von akswift vor 17 Jahren Letzter Beitrag vor 17 Jahren 7.842 Views
A
akswift Themenstarter:in
152 Beiträge seit 2005
vor 17 Jahren
integer high und low byte

Hallo,
ich möchte gerne bei einem Integer-Wert das High und Low-Byte auslesen. Stehe aber leider auf dem Schlauch...

--MfG akswift

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo akswift,

BitConverter-Klasse

herbivore

6.862 Beiträge seit 2003
vor 17 Jahren

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.

49.485 Beiträge seit 2005
vor 17 Jahren

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

6.862 Beiträge seit 2003
vor 17 Jahren

Hehe, um kein Kommentar verlegen 🙂 Hast aber natürlich recht.

Baka wa shinanakya naoranai.

Mein XING Profil.

185 Beiträge seit 2005
vor 17 Jahren

Eigendlich fehlt jetzt der Hinweis von Talla mit den Bitoperationen 😉

34 Beiträge seit 2006
vor 17 Jahren
 
// 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 😁

6.862 Beiträge seit 2003
vor 17 Jahren

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.

34 Beiträge seit 2006
vor 17 Jahren

oder


int lb = test & 255;
int hb = (test / 256) & 255;

Pat

49.485 Beiträge seit 2005
vor 17 Jahren

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

34 Beiträge seit 2006
vor 17 Jahren

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

49.485 Beiträge seit 2005
vor 17 Jahren

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

34 Beiträge seit 2006
vor 17 Jahren

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

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Pat,

es ist dann nicht das gleiche, wenn du - wie hier vorausgesetzt - Int16 und dessen gesamten Wertebereich verwendest.

herbivore

185 Beiträge seit 2005
vor 17 Jahren

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.