【问题标题】:Hex to Decimal - Swift十六进制转十进制 - Swift
【发布时间】:2015-04-21 16:12:48
【问题描述】:

对不起,如果这看起来很简单,我只是无法在网上的任何地方找到它。

我有一个十六进制的 UInt8,我需要将它转换为十进制。我如何快速实现这一目标?

例如:

"ff"

谢谢

【问题讨论】:

标签: swift hex


【解决方案1】:

您可以使用函数 strtoul 将您的十六进制转换为十进制:

let result = UInt8(strtoul("ff", nil, 16))  // 255

【讨论】:

  • 这行得通。还有一件事。如果我打印我的 NSData,它是 。我可以转换为字符串并删除第一个和最后一个字符。但这是最好的方法吗?
  • @JoeBayLD 你 not 获取字符串表示,然后将其转换为二进制。使用getBytes直接获取二进制数据。
  • 谢谢@Rob 我刚刚发现这个并且似乎正在工作。我将发布一个关于最终产品的新问题,以确保它最有效。 stackoverflow.com/questions/25424831/…
【解决方案2】:

如果你有一个字符串表示,"ff",你可以使用UInt8(_:radix:)

let string = "ff"
if let value = UInt8(string, radix: 16) {
    print(value)
}

【讨论】:

  • 最后一个有效,除了一件事。除 0 外,所有 Ints 都是正确的。它返回 nil 而不是 0,然后跳转到 1。想法?
  • 我修好了。问题是 var 值:UInt8!。我将它设为 var value: UInt8 = 0。现在它可以工作了。
  • 好收获。我已经相应地更新了我的答案。谢谢!
  • 我已经简化了我的答案,从答案中删除了strtoul
【解决方案3】:

试试这个代码,它对我有用。

// 十六进制转十进制

let h2 = "ff"
let d4 = Int(h2, radix: 16)!
print(d4) 

希望对大家有所帮助

【讨论】:

    【解决方案4】:

    如果你的 HEX 值不是字符串,而只是你想在编译时转换的东西,你也可以使用:

    let integer : UInt8 = 0xff
    

    所以在它前面加上 0x 就可以了。

    【讨论】:

      猜你喜欢
      • 2014-04-20
      • 2018-07-26
      • 1970-01-01
      • 2023-04-05
      • 2014-10-30
      • 2018-01-21
      • 2021-03-22
      相关资源
      最近更新 更多