Laden...

Binäre Literale (bzw. Literale)

Erstellt von markus111 vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.046 Views
markus111 Themenstarter:in
479 Beiträge seit 2008
vor 14 Jahren
Binäre Literale (bzw. Literale)

Hallo Community,

gibt es in C# einen binären Literal, also das ich schreiben kann

byte bin = 01100100

wie zB. 0x64?

Ich habe nur diese (doofe) Lösung gefunden:

Convert.ToInt32("01100100", 2);

mfg.
markus111

[Follow me on Twitter](http://twitter.com/blendingsky)
49.485 Beiträge seit 2005
vor 14 Jahren

Hallo markus111,

gibt es in C# eine binäre konstante

binäre Literale meinst du. Gibt es nicht. Normalerweise weicht man einfach auf hexadezimale Literale aus.

herbivore

markus111 Themenstarter:in
479 Beiträge seit 2008
vor 14 Jahren

Hallo,

Literale, ja stimmt, deswegen hat ich bei Google auch nichts richtiges gefunden...
Hm, also in meinem Fall werde ich dann wohl mit den Strings arbeiten müssen.

mfg.
markus111

[Follow me on Twitter](http://twitter.com/blendingsky)
1.361 Beiträge seit 2007
vor 14 Jahren

Hi markus,

ich weiß zwar nicht wie oft du das jetzt brauchst, aber wenns wirklich oft ist, und dir das String-Ding zu hässlich (auf seine Art) ist; dann hätte ich noch was anderes (irgendwie auch hässliches) im Angebot:


 public class Binary
    {
        public const byte b00000000 = 0;
        public const byte b00000001 = 1;
        public const byte b00000010 = 2;
        public const byte b00000011 = 3;
        public const byte b00000100 = 4;
        ...
    }
...
Console.WriteLine((Binary.b00000010 & Binary.b11001011) ^ Binary.b10101010);

Mhh.... irgendwie hat es Charme und Coolness. 8) (aber hässlich ist es zugleich auch)
Mach was draus - oder nich 😁

beste Grüße
zommi

//PS: Wenn hier wer lacht, dann Post ich die fertige Klasse erst Recht bei den Snippets 😉

//Edit2: Soeben Uwes Nachtrag mit "const" umgesetzt.

U
282 Beiträge seit 2008
vor 14 Jahren

Dann mach die aber bitte noch const, sonst fliegen die als variablen im Speicher rum und können auch noch im Code verändert werden...

Dann steht irgendwo in einer Klasse


Binary.b00000001 = 8;

DEN Fehler will ich nicht suchen müssen 😉

markus111 Themenstarter:in
479 Beiträge seit 2008
vor 14 Jahren
public class Binary  
{  
public const byte b00000000 = 0;  
public const byte b00000001 = 1;  
public const byte b00000010 = 2;  
public const byte b00000011 = 3;  
public const byte b00000100 = 4;  
...  
}  

Hmm, ich weiß nicht so... Mein Vorhaben ist ein Disassembler, der einfache Assembler Befehle wieder in etwas leserliches umwandelt, und dies emuliert (oder doch nur simuliert!?).

Hat ein kleines bisschen was mit diesem Thread zu tun: Eine CPU emulieren - Wie aufwändig/Was müsste ich Wissen? (einen Lego NXT Emulator schreiben) . Erstmal will ich nativen x86 Code - nicht direkt ausführen - aber wenigstens simulieren.

Ich fänd einen binären Literal nicht schlecht, um folgenes zu lösen:
Zum Beispiel der push Befehl ist binär so aufgebaut:

01010reg = push reg

reg ist das Register, ax wird zum Beispiel mit 000 ersetzt.
Quelle: http://www.xs4all.nl/~ganswijk/chipdir/iset/8086bin.txt

Ich möchte nun also rausfinden, ob ein Byte mit 01010 anfängt, und dann gucken was die letzen 3 Zeichen sind, um das auf den Stack zu pushene Register rauszufinden.

mfg.
markus111

[Follow me on Twitter](http://twitter.com/blendingsky)
49.485 Beiträge seit 2005
vor 14 Jahren

Hallo markus111,

wie schon gesagt, nimm einfach hexadezimale Literale. Die sind auch im Kopf leicht in binärer umzurechnen.

herbivore

X
1.177 Beiträge seit 2006
vor 14 Jahren

huhu

Die sind auch im Kopf leicht in binärer umzurechnen. oder per calc.exe ^^

Herr, schmeiss Hirn vom Himmel - Autsch!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.