C# 如何从文件中读取签名字节
我有一个文件,里面有几行十六进制单词 基本上,我想将文件读入数组C# 如何从文件中读取签名字节,c#,io,C#,Io,我有一个文件,里面有几行十六进制单词 基本上,我想将文件读入数组sbyte[] 我知道我可能可以使用 byte[] bt = File.ReadAllBytes("fileName"); 但是如何将其读入有符号字节数组呢? 有人能给我一些想法吗?你可以直接转换字节: byte[] bt = File.ReadAllBytes("fileName"); sbyte[] sbytes = Array.ConvertAll(bt, b => (sbyte)b); 或者,如果您喜欢以sbyte
sbyte[]
我知道我可能可以使用
byte[] bt = File.ReadAllBytes("fileName");
但是如何将其读入有符号字节数组呢?
有人能给我一些想法吗?你可以直接转换字节:
byte[] bt = File.ReadAllBytes("fileName");
sbyte[] sbytes = Array.ConvertAll(bt, b => (sbyte)b);
或者,如果您喜欢以sbyte
s的形式直接读取文件,您可以执行以下操作:
static IEnumerable<sbyte> ReadSBytes(string path)
{
using (var stream = File.OpenRead(path))
using (var reader = new BinaryReader(stream))
{
while (true)
{
sbyte sb;
try
{
sb = reader.ReadSByte();
}
catch(EndOfStreamException)
{
break;
}
yield return sb;
}
}
}
sbyte[] sbytes = ReadSBytes("fileName").ToArray();
静态IEnumerable ReadSBytes(字符串路径)
{
使用(var stream=File.OpenRead(path))
使用(变量读取器=新二进制读取器(流))
{
while(true)
{
sbyte某人;
尝试
{
sb=reader.ReadSByte();
}
捕获(EndOfStreamException)
{
打破
}
归还某人;
}
}
}
sbyte[]sbytes=ReadSBytes(“文件名”).ToArray();
文件有多大?如果它足够小,以至于File.ReadAllBytes
很好,您可能只需要执行以下操作:
byte[] bt = File.ReadAllBytes("fileName");
sbyte[] sbt = new sbyte[bt.Length];
Buffer.BlockCopy(bt, 0, sbt, 0, bt.Length);
尽管坦率地说:我会把它作为一个
字节[]
保存,并担心在其他地方签名/未签名。Is返回sb代码>意味着返回sb代码>?@AshBurlaczenko,是的,那是我的意图。。。我修好了,谢谢!谢谢你的回复。文件大小约为4000 kb。正如你所看到的,这是一个小文件。关于BlockCopy方法,我是否也可以使用它将数据从float[]移动到sbyte[],比如var byteArray=new byte[data.Length*4];块复制(数据,0,byteArray,0,byteArray.Length)@user3535716是的,但是在处理多字节数据时,您需要注意endianness。