所以基本上我有一些 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);
}
我正在为两个单独的 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
它们产生的十六进制是不同的(尽管非常相似)。这会抛出一些计算和进一步计算的输出,但我不明白为什么它们会有所不同。
那么在什么情况下会出现这种情况呢?我该如何补救?
非常感谢。(如果您需要更多信息,请告诉我)。