Как перейти от NSData к байту [] - PullRequest
19 голосов
/ 05 июня 2011

Если у меня есть данные изображения в NSData, извлеченные из изображения следующим образом, как мне преобразовать этот объект NSData в байтовый массив?

NSData data = NSData.FromUrl(NSUrl.FromString(urlString));

Ответы [ 3 ]

40 голосов
/ 05 июня 2011
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));
28 голосов
/ 07 июня 2011

Я получил ответ на этот вопрос из ответа Димитриса Тавликоса на этот вопрос, который я задал:

Как прочитать содержимое локального изображения в строку base64 в MonoTouch

Из этого ответа я узнал, что если вы включите ссылку System.Linq, тогда объект NSData будет иметь метод ToArray(), который будет возвращать массив байтов.Так что с этим пространством имен вы можете сделать следующее:

bytes[] dataBytes = data.ToArray();

Надеюсь, эта информация поможет кому-то еще.

6 голосов
/ 15 июля 2013

ответ Тимо как метод расширения:

    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;
    }
...