Мне интересно, есть ли Objective C, эквивалентный методу .Net BitConverter.GetBytes().
Например, в С# я могу написать что-то вроде этого:
byte [] lengthPrefix = BitConverter.GetBytes(message.length);
Что бы эквивалент был в Objective C?
Какой-то примерный код будет с благодарностью.
Спасибо заранее.
Если вам не нужна конкретная спецификация:
unsigned char * lengthPrefix = (unsigned char *)&message.length;
Или, при необходимости скопируйте в 32-разрядный буфер.
unsigned char lengthPrefixBuffer[4];
memcpy(lengthPrefixBuffer, &message.length, 4);
byte [] lengthPrefix = BitConverter.GetBytes(message.length); эквивалент для этого будет
long ID = length;
Byte *some = (Byte*)&ID;
Byte b1 = some[0];
Byte b2 = some[1];
Byte b3 = some[2];
Byte b4 = some[3];
Byte lengthPrefix[]= {b1,b2,b3,b4};
Основная идея, сколько байтов вам нужно... поэтому где-то перед этой операцией укажите, какую длину вы хотите и сколько байтов вы хотите. Так что надолго достаточно 4 байта. Для uint32 вам, вероятно, потребуется больше.
Sin Objective-C является C в своих корнях, вы можете использовать побитовые операторы для выполнения чего-то подобного.
В структуре COCOA/COCOA-TOUCH ничего не будет сделано, что сделает это автоматически для вас (например,.NET BitConverter).
NSInteger length = message.length; unsigned char *lengthPrefix = (unsigned char*)&length;