如何将字节数组转换为二进制值,然后将其写入逗号分隔的文本文件中

时间:2018-03-05 08:37:50

标签: c#

我有一个字节数组:

newMsg.DATA = new byte[64];

如何将其转换为二进制值,然后使用逗号分隔将其写入文本文件中。逗号应该在二进制值之间而不是字节.....

喜欢1,1,1,0,0,0,1,1,1,1,1,0,0,0,0,0 .......

3 个答案:

答案 0 :(得分:2)

以下是使用LINQ的示例:

byte[] arr = new byte[] { 11, 55, 255, 188, 99, 22, 31, 43, 25, 122 };

string[] result = arr.Select(x => string.Join(",", Convert.ToString(x, 2)
                     .PadLeft(8, '0').ToCharArray())).ToArray();

System.IO.File.WriteAllLines(@"D:\myFile.txt", result);

byte[] arr中的每个数字都会转换为Convert.ToString(x, 2)的二进制数字,而逗号","会在string.Join(",",...)的二进制值之间添加。最后,您可以使用resultSystem.IO.File.WriteAllLines中的所有元素写入文本文件。

上面的例子在txt文件中提供了这种输出:

0,0,0,0,1,0,1,1
0,0,1,1,0,1,1,1
1,1,1,1,1,1,1,1
...

Convert.ToString(value, baseValue)的解释:

第一个参数value表示要转换为字符串的数字 第二个参数baseValue表示您要执行的转换类型。

Posible baseValues是:2,8,10 and 16.

BaseValue = 2 - 表示转换为二进制数表示。

BaseValue = 8 - 表示转换为八进制数表示。

BaseValue = 10 - 表示转换为十进制数表示。

BaseValue = 16 - 表示转换为十六进制数字表示。

答案 1 :(得分:1)

我认为这将帮助您提供c#内置功能

借助Convert.ToString(byte [],base);这里的基数可以是[2(二进制),8(八进制),16(HexaDecimal)]

        byte[] data = new byte[64];
        // 2nd parameter 2 is Base e.g.(binary)
        string a = Convert.ToString(data[data.Length], 2);
        StringBuilder sb = new StringBuilder();
        foreach(char ch in a.ToCharArray())
        {
            sb.Append(ch+",");
        }
        // This is to remove last extra ,
        string ans = sb.ToString().Remove(sb.Length - 1, 1);

答案 2 :(得分:0)

这应该让你前进:

var bytes = new byte[] { 128, 255, 2 };
var stringBuilder = new StringBuilder();
for (var index = 0; index < bytes.Length; index++)
{
    var binary = Convert.ToString(bytes[index], 2).PadLeft(8, '0');
    var str = string.Join(",", binary.ToCharArray());
    stringBuilder.Append(str);
    if (index != bytes.Length -1) stringBuilder.Append(",");
}
Console.WriteLine(stringBuilder);