我有一个字节数组:
newMsg.DATA = new byte[64];
如何将其转换为二进制值,然后使用逗号分隔将其写入文本文件中。逗号应该在二进制值之间而不是字节.....
喜欢1,1,1,0,0,0,1,1,1,1,1,0,0,0,0,0 .......
答案 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(",",...)
的二进制值之间添加。最后,您可以使用result
将System.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);