.Net의 BitConverter.GetBytes() 메소드에 해당하는 Objective C가 있는지 궁금합니다.목표 C BitConverter 동등한
예를 들어, C#으로, I는 다음과 같이 쓸 수있다 :
바이트 [] = lengthPrefix BitConverter.GetBytes (message.length)를;
무엇이 목표 C에 해당합니까?
일부 예제 코드는 크게 감사하겠습니다.
미리 감사드립니다.
.Net의 BitConverter.GetBytes() 메소드에 해당하는 Objective C가 있는지 궁금합니다.목표 C BitConverter 동등한
예를 들어, C#으로, I는 다음과 같이 쓸 수있다 :
바이트 [] = lengthPrefix BitConverter.GetBytes (message.length)를;
무엇이 목표 C에 해당합니까?
일부 예제 코드는 크게 감사하겠습니다.
미리 감사드립니다.
특정 엔디안 필요가없는 경우 :
unsigned char * lengthPrefix = (unsigned char *)&message.length;
또는 필요한 경우, 32 비트 버퍼에 복사합니다.
unsigned char lengthPrefixBuffer[4];
memcpy(lengthPrefixBuffer, &message.length, 4);
Sin Objective-C는 뿌리가 C이므로 비트 연산자를 사용하여 비슷한 결과를 얻을 수 있습니다.
자동으로 COCOA/COCOA-TOUCH 프레임 워크에서 .NET의 BitConverter와 같은 기능을 수행하는 기능은 없습니다.
바이트 [] 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 들어 당신은 아마 더 필요합니다.
일시적으로 반환 된 정수의 주소를 사용하고 있습니다. 이 컴파일합니까? 레지스터에있을 수 있습니다 ... 'NSInteger length = message.length; unsigned char * lengthPrefix = (unsigned char *) & length;' –
+1 memcpy 버전의 경우에 sizeof를 사용했을 지 모르지만 꽤 좋지는 않습니다 (NSInteger == long). –
엔디안 관련 바이트 스와핑을 수행하기 위해 Foundation에는 전체로드 기능이 있습니다. http://developer.apple.com/mac/library/documentation/cocoa/reference/foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#jumpTo_181 – JeremyP