AsBuffer()for sbyte []?

时间:2015-12-06 02:52:10

标签: c# .net byte uwp

我正在处理一项小任务,要求我从字节数组创建IBuffer实例。

对于常规字节数组,System.Runtime.InteropServices.WindowsRuntime中的.AsByte()扩展方法工作正常,但我的许多数组实际上都是sbyte[](代码是移植的旧Java代码,其中一些这些值的定义为例如new sbyte[] { -86, 27, 28, 29, -1 };

是否还有一种涵盖sbyte[]用例的扩展方法?遗憾的是,关于sbyte数组操作(以及转换为字节数组)的信息不多。

2 个答案:

答案 0 :(得分:1)

只需将sbyte[]转换为byte[],然后使用其他方法。这是一个例子。

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

答案 1 :(得分:1)

您可以在AsBuffer()

之前尝试此转换方法
var signedBytes = new sbyte[] { -86, 27, 28, 29, -1 };
IBuffer buffer = Array.ConvertAll(signedBytes, b => (byte)b).AsBuffer();

Array.ConvertAll Documentation

此方法在.NET 2.0中引入,之后存在于所有版本中。

  

命名空间:系统

     

程序集:mscorlib(在mscorlib.dll中)

编辑:

进一步聊天后,似乎此代码位于Class Library (Portable)而不是常规Class Library,因此ConvertAll无效。

可以使用此版本实现上述目标。

var signedBytes = new sbyte[] { -86, 27, 28, 29, -1 };
IBuffer buffer = signedBytes.Cast<byte>().ToArray().AsBuffer();