我想将有符号的字节数组写入sbyte[]流.我知道,Stream.Write只接受无符号字节[],这样我就可以转换sbyte[]到byte[]之前将它传递给流.但我真的需要将数据发送为sbyte[].有办法吗?我发现BinaryWriter.Write但这相当于Stream.Write?
您可以使用的事实,CLR允许你之间进行转换byte[],并sbyte[]"免费",即使C#不:
sbyte[] data = ...;
byte[] equivalentData = (byte[]) (object) data;
// Then write equivalentData to the stream
Run Code Online (Sandbox Code Playgroud)
请注意,object首先需要使用强制转换来"说服" byte[] 可能有效的强制转换的C#编译器.(C#语言认为这两种数组类型完全不兼容.)
这样您就不需要创建所有数据的副本 - 您仍然传递相同的引用Stream.Write,只需更改"引用类型"即可.