Umwandeln binärer Typen

sra

Erfahrenes Mitglied
Hallo

Ich habe lese in meinem Programm eine Datei aus, in der binär etwas steht... Das heisst da sind lauter Einser und Nullen jeweils in achterblöcken. Das muss ich nun in ein Byte umwandeln, um an den ASCII Wert und somit an den Inhalt zu kommen.

Mein Problem: Wie zum Teufel krieg ich einen String (zb "00100110") in ein Byte konvertiert? Ich habs mit Parse und Encode probiert, aber scheinbar umsonst :/

Danke für eure Hilfe
 
Hi.

Ist es wirklich eine Binärdatei, oder ists eine Text-Datei in der Binärcode dargestellt durch ASCII-Zeichen wird? (Klingt nämlich so als hättest du es wirklich als String)

Bei der Binärdatei empfehle ich den BinaryReader. Schau dir den mal an, der ist für sowas enorm praktisch.

System.IO.BinaryReader

MfG,
Alex
 
Ok.

Hole jeden 8er Block in einen eigenen String. Die werden ja wahrscheinlich mit Leerzeichen getrennt sein also kannst Split anwenden, ansonsten kannsts dir auch mit einer Schleife und Substring holen.

Wennst alle Teile in einem String-Array hast, erstelle ein Byte Array der selben länge.

Für jeden String machst dann folgendes:
Du gehst jedes Zeichen durch, wandelst es in ein byte um (byte.Parse), shiftest es an die richtige Stelle (Zeichen ganz links beim String hat Index 0, bei der Binärdarstellung der Zahl ists aber Stelle 8), und dann verknüpftst du die 2 Zahlen mittels Oder.

Code:
using System;

public class eight_bit_string
{
  public static void Main(string[] args)
  {
    string str = "11010001";
    byte b = GetByteFromString(str);
    Console.WriteLine(str + " - > " + b);
  }

  public static byte GetByteFromString(string str)
  {
    byte b = 0;
    for (int i = 0; i < 8; i++)
    {
      Console.Write(str[i] + "");
      byte bit = byte.Parse(str[i].ToString());
      bit <<= 7-i;
      b = (byte)(b | bit);
    }
    Console.WriteLine();
    return b;
  }
}
 

Neue Beiträge

Zurück