繁体   English   中英

C#:将带符号的字节数组(sbyte [])写入文件

[英]C#: Write signed byte array ( sbyte[] ) to a File

使用File.WriteAllBytes我们可以将字节数组写入文件,如下所示:

byte[] myByteArray;
File.WriteAllBytes(@"C:\myFile.format", myByteArray);

但是有没有办法将带符号的字节数组( sbyte [] )写入文件?
像这样:

sbyte[] my_sByteArray;
File.WriteAllsBytes(@"C:\myFile.format", my_sByteArray);

对于那些想知道为什么要我这么做的人,请在这里关注我的问题

您实际上可以这样做:

sbyte[] my_sByteArray = { -2, -1, 0, 1, 2 };
byte[] my_byteArray = (byte[])my_sByteArray.Cast<byte>();
File.WriteAllBytes(@"C:\myFile.format", my_byteArray); // FE FF 00 01 02

甚至这个:

sbyte[] my_sByteArray = { -2, -1, 0, 1, 2 };
byte[] my_byteArray = (byte[])(Array)my_sByteArray;
File.WriteAllBytes(@"C:\myFile.format", my_byteArray); // FE FF 00 01 02

一种可能的替代解决方案是在将sbytes写入文件之前将其转换为shortint 像这样:

sbyte[] my_sByteArray = { -2, -1, 0, 1, 2 };
byte[] my_byteArray = 
    my_sByteArray.SelectMany(s => BitConverter.GetBytes((short)s)).ToArray();
File.WriteAllBytes(@"C:\myFile.format", my_byteArray); 
// FE FF FF FF 00 00 01 00 02 00

当然,这将使您必须写入的字节数增加一倍(如果使用int则为四倍),几乎没有好处。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM