Sbyte[] 转换为 Byte[] 的最佳方法是什么?

3

我正在研究从sbyte[]转换为byte[]的几种方法。

我看到最常见的方法如下:

1.

sbyte[] signed = { -2, -1, 0, 1, 2 }; 
byte[] unsigned = (byte[]) (Array)signed; 

2.

sbyte[] signed = { -2, -1, 0, 1, 2 }; 
byte[] unsigned = new byte[signed.Length]; 
Buffer.BlockCopy(signed, 0, unsigned, 0, signed.Length); 

3.

byte[] dest = Array.ConvertAll(sbyteArray, (a) => (byte)a); 

这些方法有哪些优缺点?举个例子,我收到一张图像的sbyte[]格式,希望使用Image类将该图像保存到磁盘上。
Image pic = Image.FromStream(new MemoryStream((byte[]) ((Array) sbyteArr)));
1个回答

1

#1是您最好的选择。即使它看起来有点"hacky",但这只是为了让编译器满意而进行的一种操作。而且这种方法显然是最快的,因为数据不会被复制。

我做了一个快速测试,类型转换似乎非常不错。负数值也能正确转换,所以它归结为一个简单的类型强制转换。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接