Objective-C 将十六进制字符串解析为整数
我想知道如何在 Objective-C 中解析代表数字的十六进制字符串。我愿意使用客观方法或基于 C 的方法,两者都可以。
示例:
#01FFFFAB
应解析为整数: 33554347
任何帮助将不胜感激!
I would like to know how to parse a hex string, representing a number, in Objective-C. I am willing to use both an objective, or a C-based method, either is fine.
example:
#01FFFFAB
should parse into the integer:
33554347
Any help would be appreciated!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
Joshua Weinberg 的答案大部分是正确的,但是在扫描十六进制整数时,
0x
前缀是可选的。如果您有一个格式为#01FFFFAB
的字符串,您仍然可以使用NSScanner
,但可以跳过第一个字符。Joshua Weinberg's answer is mostly correct, however the
0x
prefix is optional when scanning hexadecimal integers. If you have a string in the format#01FFFFAB
, you can still useNSScanner
, but you can skip the first character.您可以使用 NSScanner 对于这个
outVal
将包含您要查找的 int。 0x 是可选的。you can use NSScanner for this
outVal
will contain the int you're looking for. The 0x is optional.strtol() 是你的朋友。
它将字符串转换为 long,并且您可以传入数字的基数。不过,首先要去掉 # 符号,或者将指向第一个数字字符的指针传递给 strtol。
strtol() is your friend.
It converts a string to a long, and you can pass the base of the number in. Strip that # sign off first though, or pass to strtol a pointer to the first numerical character.
您可以使用以下行进行转换。它只有一行代码:
快乐编码!!!
You can use the below line for conversion. Its just one line code:
Happy Coding!!!
Swift 4 标准库引入了新的初始化程序来解析所有整数类型。它需要字符串以基数(即基数)进行解析并返回可选整数:
Swift 4 standard library introduced new initializer for parsing all integer types. It takes string to parse with radix (i.e. base) and returns optional integer:
根据苹果公司的说法:
所以,如果你有
NSData
obj 你可以做下一步According to apple:
so, if u have
NSData
obj u can do next对于斯威夫特 3:
For Swift 3: