Benutzer mit den meisten Antworten
Bit von einem Byte lesen

Frage
Antworten
-
Hi,
wenn Du ein etwas hast, was Du in seine Bits zerlegen kannst, schau dir mal BitArray an.
http://msdn.microsoft.com/de-de/library/system.collections.bitarray.aspx
Wenn Du nur einen String in der o.g. Form hast (steht da ein Leerzeichen oder war das nur zur besseren Kenntlichmachung?) und wirklich wirklich 8 einzelne Variablen für die Speicherung der Zustände verwenden willst (würde ich nicht machen), dann evtl. so:
char[] Bits = TextBox1.Text.ToCharArray(); char B0 = Bits[0]; char B1 = Bits[1]; char B2 = Bits[2]; ...
Aber welchen Sinn sowas haben sollte, kann ich nicht erkennen.
Wenn Du mit bool anstelle von char für B0 - B7 arbeitest, kannst Du den Wert entweder über Boolean.TryParse umwandeln oder prüfen, ob der Wert "1" or "0" ist und dann B0 ... belegen.
Evtl. wäre es besser, wenn Du uns verrätst, was Du mit den Daten anstellen willst, ggfs. haben wir dann Alternativvorschläge für dich.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert charly67160 Mittwoch, 19. März 2014 21:22
-
Hallo,
bist du dir sicher, dass du 8 verschiedene Variablen haben möchtest? Ein Array ist in vielerlei Hinsicht praktischer zu handhaben.Ich würde dir empfehlen zunächst ein Array daraus zu formen. Das geht am einfachsten mit LINQ:
var array = Label1.Text.ToCharArray()//String in ein Array von einzelnen Zeichen wandeln .Select(x => x == '0' ? false : true)//Für jedes Element entscheiden ob es true (1) oder false (0) ist .ToArray();//Ein Array aus der Liste machen
Wenn du dann immernoch einzelne Variablen haben willst (ich wüsste nicht wozu) kannst du einfach alle Elemente abfragen und zuweisen:bool b0 = array[0]; bool b1 = array[1]; bool b2 = array[2]; //usw.
PS: Wenn du leerzeichen in dem String hast, dann kannst du diese zuvor entfernen:Label1.Text.Replace(" ", "").ToCharArray(...
PPS: Zur Vollständigkeit mal noch ein Link mit Lösungen wie man ein Bit von einer Byte-Variable bekommt:
http://stackoverflow.com/questions/4854207/get-a-specific-bit-from-byte
Das Ganze funktioniert mit allen ganzzahligen Typen (int, uint, long, ...).
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.
- Bearbeitet Tom Lambert (Koopakiller)Moderator Mittwoch, 19. März 2014 20:00 PPS
- Als Antwort markiert charly67160 Mittwoch, 19. März 2014 21:22
Alle Antworten
-
Hi,
wenn Du ein etwas hast, was Du in seine Bits zerlegen kannst, schau dir mal BitArray an.
http://msdn.microsoft.com/de-de/library/system.collections.bitarray.aspx
Wenn Du nur einen String in der o.g. Form hast (steht da ein Leerzeichen oder war das nur zur besseren Kenntlichmachung?) und wirklich wirklich 8 einzelne Variablen für die Speicherung der Zustände verwenden willst (würde ich nicht machen), dann evtl. so:
char[] Bits = TextBox1.Text.ToCharArray(); char B0 = Bits[0]; char B1 = Bits[1]; char B2 = Bits[2]; ...
Aber welchen Sinn sowas haben sollte, kann ich nicht erkennen.
Wenn Du mit bool anstelle von char für B0 - B7 arbeitest, kannst Du den Wert entweder über Boolean.TryParse umwandeln oder prüfen, ob der Wert "1" or "0" ist und dann B0 ... belegen.
Evtl. wäre es besser, wenn Du uns verrätst, was Du mit den Daten anstellen willst, ggfs. haben wir dann Alternativvorschläge für dich.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert charly67160 Mittwoch, 19. März 2014 21:22
-
Hallo,
bist du dir sicher, dass du 8 verschiedene Variablen haben möchtest? Ein Array ist in vielerlei Hinsicht praktischer zu handhaben.Ich würde dir empfehlen zunächst ein Array daraus zu formen. Das geht am einfachsten mit LINQ:
var array = Label1.Text.ToCharArray()//String in ein Array von einzelnen Zeichen wandeln .Select(x => x == '0' ? false : true)//Für jedes Element entscheiden ob es true (1) oder false (0) ist .ToArray();//Ein Array aus der Liste machen
Wenn du dann immernoch einzelne Variablen haben willst (ich wüsste nicht wozu) kannst du einfach alle Elemente abfragen und zuweisen:bool b0 = array[0]; bool b1 = array[1]; bool b2 = array[2]; //usw.
PS: Wenn du leerzeichen in dem String hast, dann kannst du diese zuvor entfernen:Label1.Text.Replace(" ", "").ToCharArray(...
PPS: Zur Vollständigkeit mal noch ein Link mit Lösungen wie man ein Bit von einer Byte-Variable bekommt:
http://stackoverflow.com/questions/4854207/get-a-specific-bit-from-byte
Das Ganze funktioniert mit allen ganzzahligen Typen (int, uint, long, ...).
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.
- Bearbeitet Tom Lambert (Koopakiller)Moderator Mittwoch, 19. März 2014 20:00 PPS
- Als Antwort markiert charly67160 Mittwoch, 19. März 2014 21:22
-
Salut,
Ich bin aus Frankreich, mein Deutsch ist nicht so gut.
ich bekomme von einer SPS einen String in bynary Format ( Byte oder Wort), z.Beispiel: 11011001. Es wir den Status eine Pumpe angezeigt.
wenn bit 5 =1 ist wird eine Pumpe in GRÜN angezeigt
wenn bit 7 =1 ist wird die Pumpe in ROT angezeigt
etc..
Danke für deine Hilfe
charly
-
Hallo Charly,
in dem Fall sollten beide Lösungen von Tom und mir (die an für sich das gleiche machen) für dich nutzbar sein.
Man könnte das zwar auch anders lösen, wenn Du aber eh jede Anzeige mit dem jeweiligen Wert auf rot oder grün umschalten willst, kann man das auch so machen, wie Du es angedacht hast.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Mittwoch, 19. März 2014 20:08