0

ランダムファイルを作成します:

-(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;

}

そしてそれをhexdumpするとき私は見ることができます:

hexdump -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  |................|

最初の1つは4である必要があります(デバッガーでチェックアウト)。しかし、それは逆に書かれているように見えます。

NSDataにデータを「適切に」保存するように指示する簡単な解決策はありますか?

4

1 に答える 1

2

エンディアンの問題です。

私はただする必要がありました:randomBits = CFSwapInt32HostToBig(randomBits);

于 2012-11-22T17:05:50.913 に答える