Objective C BitConverter Эквивалент - PullRequest
2 голосов
/ 28 мая 2010

Мне интересно, существует ли Objective C, эквивалентный методу BitConverter.GetBytes () .Net.

Например, в C # я могу написать что-то вроде этого:

byte [] lengthPrefix = BitConverter.GetBytes (message.length);

Каким будет эквивалент в Задаче C?

Некоторые примеры кода будут с благодарностью.

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 28 мая 2010

Если вам не нужен конкретный порядок байтов:

unsigned char * lengthPrefix = (unsigned char *)&message.length;

Или, если необходимо, скопировать в 32-битный буфер.

unsigned char lengthPrefixBuffer[4];
memcpy(lengthPrefixBuffer, &message.length, 4);
0 голосов
/ 16 мая 2017

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 вам, вероятно, нужно больше.

0 голосов
/ 28 мая 2010

Sin Objective-C - это корень C, вы можете использовать побитовые операторы для достижения чего-то похожего.

В платформе COCOA / COCOA-TOUCH нет ничего, что сделало бы это автоматически (например, BitConverter .NET).

...