我正在处理一项小任务,要求我从字节数组创建IBuffer实例。
对于常规字节数组,System.Runtime.InteropServices.WindowsRuntime中的.AsByte()
扩展方法工作正常,但我的许多数组实际上都是sbyte[]
(代码是移植的旧Java代码,其中一些这些值的定义为例如new sbyte[] { -86, 27, 28, 29, -1 };
是否还有一种涵盖sbyte[]
用例的扩展方法?遗憾的是,关于sbyte数组操作(以及转换为字节数组)的信息不多。
答案 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();