[英]converting string to byte array in c# getting zeros in bytes
我使用下面的代码将 .key 扩展文件中的数据读取到字节数组,我得到 16 个字节的输出,但所有字节都为零。
System.IO.StreamReader myFile = new System.IO.StreamReader(Server.MapPath("ELECTRI.KEY"));
string myString = myFile.ReadLine();
string str = myString;
//string str = myString.Substring(0, myString.Length - 2);
BitArray bit = new BitArray(str.Length);
for (int i = 0; i < str.Length; i++)
{
if (str.Substring(i, 1) == "1")
{
bit[i] = true;
}
else
{
bit[i] = false;
}
}
int numBytes = bit.Count;
if (bit.Count % 8 != 0) numBytes++;
keyyy = new byte[numBytes];
keyyy = new byte[numBytes];
这句话的意思是用new byte[numBytes]
初始化keyyy
,所以所有的字节都是零。 你必须分配每个
这是填充数组所需的代码
int numBytes = bit.Count;
if (bit.Count % 8 != 0) numBytes++;
keyyy = new byte[numBytes];
bit.CopyTo(keyyy, 0);
编辑
byte[] keyyy = File.ReadAllBytes("ELECTRI.KEY");
我想如果我现在正确理解您的问题,这样做很简单!
这是您可以解决问题的另一种方法:
string str = "1111111100000000";
byte[] keyyy = new byte[str.Length / 8]
.Select((b, index) => Convert.ToByte(str.Substring(index * 8, 8), 2)).ToArray();
此语句使用Substring
将字符串拆分为 8 个字符的组(忽略余数)。 然后使用Convert.ToByte
每个 8 个字符的字符串(即11111111
)转换为一个byte
。 Convert.ToByte
的参数2
让我们的方法知道它是一个 base2 二进制字符串。
尝试这个:
byte[] buffer;
using (StreamReader reader= new StreamReader("PATH HERE")) {
var input = reader.ReadToEnd();
buffer = Encoding.UTF8.GetBytes(input);
}
PS:这将读取整个文件内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.