gpt4 book ai didi

objective-c - 在 Objective-C 中处理大数字?

转载 作者:行者123 更新时间:2023-12-04 05:58:27 25 4
gpt4 key购买 nike

我需要将 1393443048683555715 之类的值转换为十六进制。但是,首先,例如,我无法使用 NSLog() 将其显示为十进制。

好的,它有效:

NSLog(@"%qu", 1393443048683555706);

但是转换为十六进制怎么样。我必须使用什么类型来存储这个大值?
NSLog([NSString stringWithFormat: @"%x", 1393443048683555706]);
// result eb854b7a. It's incorrect result!

但我忘了说这个大数字表示为字符串@“1393443048683555706”(不是整数)

最佳答案

“x”格式说明符用于 32 位数字;您需要使用“qx”或“qX”(取决于您是否希望字母值大写)。这些是 unsigned long long 值的格式化程序,请参阅:

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1

接下来,您不应像上面所做的那样将字符串直接传递给 NSLog - 这可能会导致崩溃。

NSLog(string); // bad!!
NSLog(@"%@", string); // good

所以如果你的值是一个字符串,你会想要这样做:
NSString *longNumber = @"1393443048683555706";
NSLog(@"%qx", [longNumber longLongValue]);

如果字符串值不能被强制转换为数字,longLongValue 将返回 0。我会让你处理错误(和边界)检查 - 参见 NSString详情。

如果要将十六进制值保存为字符串,请执行以下操作:
NSString *hexRepresentation = [NSString stringWithFormat:@"%qx", [longNumber longLongValue]];

同样,最好注意错误处理。

关于objective-c - 在 Objective-C 中处理大数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9231787/

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