У меня есть значение типа int, которое нужно преобразовать в массив байтов. Как вы это делаете в Objective-C? Есть способы сделать это?
Спасибо,
У меня есть значение типа int, которое нужно преобразовать в массив байтов. Как вы это делаете в Objective-C? Есть способы сделать это?
Спасибо,
Каким образом преобразовано? Вы хотите использовать прямой порядок байтов, прямой порядок байтов или собственный порядок байтов? Если вы хотите, чтобы он располагался в собственном порядке байтов, все, что вам нужно сделать, это:
int val = //... initialize integer somehow char* bytes = (char*) &val; int len = sizeof(int);
Тем не менее, лучший способ манипулировать байтами целого числа - выполнять побитовые операции. Например, чтобы получить байт младшего порядка, вы можете использовать val & 0xFF, чтобы получить следующий, вы используете (val>>8)&0xFF
, затем (val>>16)&0xFF
, затем (val>>24)&0xFF
и т. Д.
Конечно, это зависит от размера вашего типа данных. Если вы делаете такие вещи, вам действительно следует включить <
_5 _ >
; и используйте uint8_t
, uint16_t
, uint32_t
или uint64_t
, в зависимости от того, насколько большое целое число вы хотите; в противном случае вы не сможете надежно поиграть с большим количеством байтов.
sizeof()
?
- person Joel Fischer; 10.03.2014
Я подозреваю, что вы хотите передать этот массив байтов где-нибудь, возможно, в объект NSMutableData. Вы просто передаете адрес & val
Пример:
[myData appendBytes:&myInteger length:sizeof(myInteger)];
Эта ссылка более полная и касается порядка байтов:
Добавить NSInteger в NSMutableData
char[]
. - person   schedule 22.04.2010