gpt4 book ai didi

c# - 哪种方式是从 Sbyte[] 转换为 Byte[] 的最佳方式

转载 作者:行者123 更新时间:2023-11-30 18:02:25 24 4
gpt4 key购买 nike

我一直在寻找从 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 是您最好的选择。尽管它看起来有点“hacky”,但它只是让编译器开心的 hack。而这个显然是最快的,因为数据不会被复制。

我做了一个快速测试,类型转换似乎工作得很好。负值被正确转换,所以它归结为一个简单的类型强制转换。

关于c# - 哪种方式是从 Sbyte[] 转换为 Byte[] 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8089680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com