c# - 将 byte[] 转换为 sbyte[]

标签 c# type-conversion

我尝试将数组从 byte[] 转换为 sbyte[]

这是我的示例数组:

byte[] unsigned = { 0x00, 0xFF, 0x1F, 0x8F, 0x80 };

我已经尝试过这个:

sbyte[] signed = (sbyte[])((Array)unsigned);

但是这不起作用。此操作后数组中没有值。

有人有更好的主意吗?

最佳答案

sbyte[] signed = (sbyte[]) (Array) unsigned;

这是可行的,因为 byte 和 sbyte 在内存中具有相同的长度,并且可以在不需要改变内存表示的情况下进行转换。

但是,此方法可能会导致调试器出现一些奇怪的错误。如果您的字节数组不是很大,您可以使用 Array.ConvertAll 代替。

sbyte[] signed = Array.ConvertAll(unsigned, b => unchecked((sbyte)b));

关于c# - 将 byte[] 转换为 sbyte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25759878/

相关文章:

c# - 可以堆叠多个 IEnumerable 查询吗?

c# - 如何以编程方式在 gridview 中添加更复杂的列

ios - 如何在 IoS Swift 中比较 Set<String> 和 String?

c++ - 这个类型转换意味着什么?

javascript - 数组到字符串转换,Php到js

c - STM32将无符号短数组转换为 float 组

c# - 一个枚举需要多少内存?

c# - 将字母类型转换为 int 时,C# 会做什么?

c# - 使用 Prism 在 Silverlight 中更改区域 View

c++ - 使用模板进行隐式类型转换