Как перевести строку в двоичный - PullRequest
1 голос
/ 28 августа 2009
foreach (byte binaryOutupt in Encoding.ASCII.GetBytes(fileLine))
{
       fileOutput.Write(binaryOutupt.ToString("x2"));
 }

Я получил этот код, который позволяет мне преобразовывать строковый байт в шестнадцатеричный код, но как мне изменить это?

Ответы [ 3 ]

4 голосов
/ 28 августа 2009

Вот пример полного обхода, включая вашу кодировку.

// Input
String input = "Test1234";

// Encoding
String outputA = String.Empty;  
foreach (Byte b in Encoding.ASCII.GetBytes(input))
{
    outputA += b.ToString("X2");
}

// Decoding
Byte[] bytes = new Byte[outputA.Length / 2];
for (Int32 i = 0; i < outputA.Length / 2; i++)
{
    bytes[i] = Convert.ToByte(outputA.Substring(2 * i, 2), 16);
}
String outputB = Encoding.ASCII.GetString(bytes);

// Output
Console.WriteLine(input);
Console.WriteLine(outputA);
Console.WriteLine(outputB);

Это просто пример, указывающий в правильном направлении - очевидно, следует использовать StringBuilder s и выполнить некоторую обработку ошибок в рабочем коде, если ввод содержит недопустимые символы или имеет нечетную длину.

1 голос
/ 28 августа 2009

Не знаю, изящное ли это решение или нет, но, похоже, оно работает (я тестировал с небольшой строкой):

var sb = new StringBuilder("GET THE HEX LINE SOME WAY");
var strs = new string[sb.Length/2];

var i = 0;
var j = 0;
while(i<sb.Length)
{
    strs[j] = sb.ToString(i, 2);
    i += 2;
    j++;
}

foreach (var s in strs)
{
    Console.WriteLine("Hex: {0}, Orig ASCII:  {1}",
                         s, Int32.Parse(s,NumberStyles.HexNumber));
}

PS: - в первой строке инициализировать построитель строк шестнадцатеричной строкой из файла или другого источника, где вы его пишете.

0 голосов
/ 28 августа 2009

используйте io.streamreader для файлового потока, памяти, потока io, тогда вы можете прочитать поток как строку

при условии, что вы читаете байтовый поток

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...