Swift convert UInt to Int

梦想与她 提交于 2019-11-27 13:25:47

问题


I have this expression which returns a UInt32:

let randomLetterNumber = arc4random()%26

I want to be able to use the number in this if statement:

if letters.count > randomLetterNumber{
    var randomLetter = letters[randomLetterNumber]
}

This issue is that the console is giving me this

Playground execution failed: error: <REPL>:11:18: error: could not find an overload for '>' that accepts the supplied arguments
if letters.count > randomLetterNumber{
   ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~

The problem is that UInt32 cannot be compared to an Int. I want to cast randomLetterNumber to an Int. I have tried:

let randomLetterUNumber : Int = arc4random()%26
let randomLetterUNumber = arc4random()%26 as Int

These both cause could not find an overload for '%' that accepts the supplied arguments.

How can I cast the value or use it in the if statement?


回答1:


Int(arc4random_uniform(26)) does two things, one it eliminates the negative results from your current method and second should correctly creat an Int from the result.




回答2:


More simple than this, impossible:

Int(myUInteger)



回答3:


Just create a new int with it

let newRandom: Int = Int(randomLetterNumber)
if letters.count > newRandom {
    var randomLetter = letters[newRandom]
}

or if you never care about the UInt32 you can just create an Int immediately:

let randomLetterNumber = Int(arc4random() % 26)



回答4:


You can do

let u: UInt32 = 0x1234abcd
let s: Int32 = Int32(bitPattern: u)


来源:https://stackoverflow.com/questions/24144557/swift-convert-uint-to-int

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!