Ответ 1
NSData data = NSData.FromUrl(NSUrl.FromString(urlString));
byte[] dataBytes = new byte[data.Length];
System.Runtime.InteropServices.Marshal.Copy(data.Bytes, dataBytes, 0, Convert.ToInt32(data.Length));
Если у меня есть данные изображения в NSData, извлеченные из образа следующим образом, как мне преобразовать этот объект NSData в массив байтов?
NSData data = NSData.FromUrl(NSUrl.FromString(urlString));
NSData data = NSData.FromUrl(NSUrl.FromString(urlString));
byte[] dataBytes = new byte[data.Length];
System.Runtime.InteropServices.Marshal.Copy(data.Bytes, dataBytes, 0, Convert.ToInt32(data.Length));
Я получил ответ на этот вопрос из ответа Димитриса Тавликоса на этот вопрос, который я задал:
Как прочитать содержимое локального изображения в строку base64 в MonoTouch
Из этого ответа я узнал, что если вы включите ссылку System.Linq
, то объект NSData
будет иметь метод ToArray()
, который вернет массив байтов. Таким образом, с помощью указанного пространства имен вы можете сделать следующее:
bytes[] dataBytes = data.ToArray();
Надеюсь, эта информация поможет кому-то еще.
Timo отвечает как метод расширения:
public static byte[] ToByteArray (this NSData data) {
var dataBytes = new byte[data.Length];
System.Runtime.InteropServices.Marshal.Copy(data.Bytes, dataBytes, 0, Convert.ToInt32(data.Length));
return dataBytes;
}