как преобразовать значение байта в int в target-c - PullRequest
3 голосов
/ 27 апреля 2010

Скажите, пожалуйста, как конвертировать байты в NSInteger / int в target-c в программировании iPhone?

Ответы [ 5 ]

5 голосов
/ 27 апреля 2010

Что вы подразумеваете под "байтами"? Если вы хотите преобразовать один байт, представляющий целочисленное значение, в тип int (или NSInteger), просто используйте «=»:

Byte b = 123;
NSInteger x;
x = b;

как Byte (то же самое, что unsigned char - 1-байтовое целое число без знака) и NSInteger (так же, как int - 4-байтовое целое число со знаком) являются простыми целочисленными типами конвертироваться автоматически. Вы должны прочитать больше о " c типах данных " и " правилах преобразования ". например http://www.exforsys.com/tutorials/c-language/c-programming-language-data-types.html

Если вы хотите преобразовать несколько байтов, хранящих некоторое значение, в int, тогда преобразование зависит от структуры этих данных: сколько байтов на значение, подписанное или неподписанное.

4 голосов
/ 27 апреля 2010

Если под байтом вы подразумеваете 8-битное значение без знака, то подойдет следующее.

uint8_t foo = 3;   // or unsigned char foo...
NSInteger bar = (NSInteger) foo;

или даже

NSInteger bar = foo;
1 голос
/ 27 апреля 2010

Мое предположение:

unsigned char data[] = { 0x00, 0x02, 0x45, 0x28 };
NSInteger intData = *((NSInteger *)data);

NSLog(@"data:%d", intData); // data:675611136
NSLog(@"data:%08x", intData); // data:28450200

Итак, остерегайтесь порядка байтов.

1 голос
/ 27 апреля 2010
NSInteger x = 3;
unsigned char y = x;
int z = x + y;
0 голосов
/ 27 апреля 2010

Используйте оператор "=".

...