Есть два значения для + операции. Первое значение - операция арифметического сложения между значениями нескольких чисел. Например,
System.out.println(1 + 2 + 5);
Результат печати выше 9.
Второе значение - это String конкатенация между String и другими. Например,
System.out.println(9 + "=" + 9);
Приведенный выше результат печати равен «9 = 9».
Я думаю, что вы можете напечатать коммутативный закон сложения. Следующее может быть тем, что вы хотите.
int a = 1, b = 3, c = 5;
System.out.println( (( a + b ) + c ) + "=" + ( a + ( b + c )) );
Вы не можете объявить массив с помощью переменной так Byte byteData[len];
не будет работать. Если Вы хотите скопировать данные из указателя, Вам также нужно к memcpy (который пройдет данные, на которые указывает указатель, и скопирует каждый байт до указанной длины).
Попытка:
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSUInteger len = [data length];
Byte *byteData = (Byte*)malloc(len);
memcpy(byteData, [data bytes], len);
Этот код динамично выделит массив корректному размеру (Вы должны free(byteData)
когда Вы будете сделаны), и скопируйте байты в него.
Вы могли также использовать getBytes:length:
как обозначено другими, если Вы хотите использовать массив фиксированной длины. Это избегает malloc/free, но менее расширяемо и более подвержено проблемам переполнения буфера, таким образом, я редко когда-либо использую его.
Подпись -[NSData bytes]
- (const void *)bytes
. Вы не можете присвоить указатель на массив на стеке. Если Вы хотите скопировать буфер, управляемый NSData
объект в массив, использовать -[NSData getBytes:]
. Если Вы хотите сделать это без копирования, то не выделяйте массив; просто объявите переменную указателя и позвольте NSData
управляйте памятью для Вас.
Поэтому тип возврата для [байты данных] являются пустотой* массив c-стиля, не Uint8 (который является тем, какой Байт является определением типа для).
Ошибка состоит в том, потому что Вы пытаетесь установить выделенный массив, когда возврат является типом указателя, что Вы ищете, getBytes:length: звоните, который был бы похож:
[data getBytes:&byteData length:len];
Который заполняет массив, Вы выделили с данными из объекта NSData.