2011-08-08 2 views
1

iOS의 버퍼에서 정수를 가져 오는 데 문제가 있습니다.iOS의 버퍼에서 정수로 큰 정수를 읽는 방법은 무엇입니까?

output = [[NSString alloc] initWithBytes:buffer lenght:len encoding:NSASCIIStringEncoding]; 

을하지만 정수의 동등한 initWithBytes 수없는 것 :

내가 사용하고, 문자열을 읽을 수 있습니다. 사전에

감사합니다, 버퍼가 정수 값에 직접 캐스팅 할 수 있기 때문이다

데이브

답변

1

.

int original = 0xBADF00D; 
void *buffer = &original; 

//Cast the void* as an int* and then dereference the value 
int intFromBuffer = *(int*)buffer; 

NSLog(@"0x%X 0x%X", original, intFromBuffer); 

출력 : 그것에 대해

0xBADF00D 0xBADF00D

+0

안녕 조, 감사합니다! 나는 이것이 매우 큰 숫자를 위해 일할 것이라고 가정하고 있는가? – user867358

+0

Belay는 - 단지 10 억 개를 16 진수로 변환하고 intFromBuffer를 보았는데 성공했습니다! – user867358

+0

그렇습니다. 매우 큰 숫자에서는 작동하지만 버퍼 내부에 올바른 정수 크기를 사용하고 있는지 확인하십시오. 버퍼가 32 비트 부호없는 int를 가리키고 32 비트 unsigned int를 사용하면 64 비트 숫자도 동일합니다. 이는 중요하지 않으므로 쓰레기 번호 나 더 이상 읽을 수없는 메모리를 읽지 않게됩니다. – Joe

관련 문제