gpt4 book ai didi

ios - 2个NSData对象如何输出相同的HEX但在转换为char数组时却不同?

转载 作者:行者123 更新时间:2023-11-28 20:21:17 36 4
gpt4 key购买 nike

所以基本上我有一些 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 十六进制不同(尽管非常相似)。这丢弃了一些计算和进一步计算的输出,但我不明白为什么它们会完全不同。

那么在什么情况下会出现这种情况呢?我该如何补救?

非常感谢。 (如果您需要更多信息,请告诉我)。

最佳答案

您没有打印缓冲区中的数据。您正在打印两个局部数组的地址衰减到的指针。如果您实际打印数据,它们将是相同的:

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

关于ios - 2个NSData对象如何输出相同的HEX但在转换为char数组时却不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15839777/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com