0

したがって、基本的に、いくつかの NSData オブジェクトと次のようなメソッドがあります。

+ (NSData *)outputData:(NSData *)data andThisData:(NSData *)secondData {
    char cData[data.length];
    [data getBytes:&cData];

    char cSecondData[secondData.length];
    [secondData getBytes:&cSecondData];

    NSLog(@"NSData: %@, %@", data, secondData);
    NSLog(@"HEX: %x, %x",cData,cSecondData);
}

一見同じように見える 2 つの別個の NSData オブジェクトに対して、この出力を取得しています。

 NSData: <dc4945fa a76fa1eb 6c3de73e acabf71c>, <c7a75cfc 11697878 14b95c2b 8680b60b ed553909 d199c12b 6e66df1d 20dce6e5 46ef9cf6 0aefa4ee bf98b0d1 6579a311>
    HEX: 5fbfe870, 5fbfe840

 NSData: <dc4945fa a76fa1eb 6c3de73e acabf71c>, <c7a75cfc 11697878 14b95c2b 8680b60b ed553909 d199c12b 6e66df1d 20dce6e5 46ef9cf6 0aefa4ee bf98b0d1 6579a311>
    HEX: 5fbfe820, 5fbfe7f0

ご覧のとおり、NSData の出力はまったく同じですが、char生成される 16 進数は異なります (非常に似ていますが)。これにより、いくつかの計算とさらなる計算の出力が失われていますが、なぜそれらが異なるのかまったくわかりません。

では、これはどのような状況で発生するのでしょうか。そして、どうすればそれを修正できますか?

どうもありがとう。(さらに情報が必要な場合はお知らせください)。

4

1 に答える 1

3

バッファ内のデータを印刷していません。2 つのローカル配列のアドレスが減衰するポインターを出力しています。実際にデータを印刷すると、それらは同じになります。

NSMutableString *hex = [NSMutableString string], *secondHex = [NSMutableString string];
for (int i = 0; i < sizeof(cData); i++) {
    [hex appendFormat:@"%02x", cData[i]];
    [secondHex appendFormat:@"%02x", cSecondData[i]];
}

NSLog(@"%@ %@", hex, secondHex);
于 2013-04-05T17:21:46.383 に答える