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。