Я хотел бы отметить, что [NSData dataWithBytes:&s length:1]
и [NSData dataWithBytes:&s length:2]
не делают то, что вы ожидаете.Например, допустим, ваша переменная s
равна шестнадцатеричному значению 0xFFCCAA00
.Передача длины в один означает, что размер данных будет один байт.При прохождении 1 ваш размер будет равен 0xFFCC (255), а при прохождении 2 ваш размер будет равен 0xFFCC (65484).Вероятно, вам нужно следующее
// >= 128
int length = 2;
NSData *size = [NSData dataWithBytes:&length length:sizeof(length)];
Обновление:
Если вы хотите отправить один байт, попробуйте следующее:
unsigned char length = 1;
// < 128
NSData *size = [NSData dataWithBytes:&length length:sizeof(length)];
// >= 128
length = 2;
NSData *size = [NSData dataWithBytes:&length length:sizeof(length)];