2012-11-22 8 views
0

는 I 임의 파일 작성 :int를 nsdata에 다른 방법으로 저장하는 방법은 무엇입니까?

-(NSData*)generateRandomNSDataWithNumberOfRecords:(int)length { 

NSMutableData* theData = [[NSMutableData alloc] init]; 
int numberOfElements; 

for (int i=0; i<length; i++) { 
    numberOfElements = arc4random() % 15; 
    if (numberOfElements == 0) 
     numberOfElements = 1; 

    NSData *tempData = [NSData dataWithBytes: &numberOfElements length: sizeof(numberOfElements)]; 
    [theData appendData:tempData]; 
    for(int j = 0 ; j < numberOfElements; j++) 
    { 

     int randomBits = arc4random()%255; // 0 to 255 
     [theData appendData:[NSData dataWithBytes: &randomBits length: sizeof(randomBits)]]; 
    } 

} 
return theData; 

}

을하고 hexdumping 때 볼 수

16 진 덤프 -C TAPE1

00000000 04 00 00 00 cd 00 00 00 14 00 00 00 65 00 00 00 |............e...| 
00000010 16 00 00 00 0a 00 00 00 d2 00 00 00 c1 00 00 00 |................| 
00000020 02 00 00 00 f6 00 00 00 e4 00 00 00 ce 00 00 00 |................| 

먼저 하나 4이어야한다 (아웃하였습니다 오버 디버거). 하지만 다른 방법으로 작성된 것으로 보입니다.

데이터를 "올바르게 저장"하도록 NSData에 지시하는 간단한 해결책이 있습니까?

답변

2

그것은 엔디안 문제입니다.

다음과 같이하면됩니다 : randomBits = CFSwapInt32HostToBig(randomBits);

관련 문제