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
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
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
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.
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 😉
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
Hallo markus111,
wie schon gesagt, nimm einfach hexadezimale Literale. Die sind auch im Kopf leicht in binärer umzurechnen.
herbivore
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.