Mad*_*erg 44 type-conversion swift
我正在创建一个Tcp客户端,因此使用CFStreamCreatePairWithSocketToHost期望UInt32的第二个参数.
以下是我正在尝试做的一个示例:
func initNetwork(IP: String, Port: Int) {
// relevant stuff
//Convert Port:Int to UInt32 to make this shit work!
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, IP as NSString , Port , &readStream, &writeStream)
// Irelevant stuff
}
Run Code Online (Sandbox Code Playgroud)
我一直在寻找一段时间的解决方案,我似乎找不到一个!
Nik*_* M. 89
你可以轻松地做到:
var x = UInt32(yourInt)
Run Code Online (Sandbox Code Playgroud)
Hea*_*ers 17
Nikos M.的答案可能会溢出,因为Swift Int现在是64位,当默认的UInt32初始化程序溢出时,Swift会崩溃.如果你想避免溢出,使用的truncatingBitPattern初始化.
如果您确定数据不会溢出,则应使用默认初始值设定项,因为溢出表示应用程序的无效数据.如果您确定您的数据会溢出,但您不关心截断(例如,如果您正在构建哈希值或其他内容),那么您可能希望截断.
let myInt: Int = 576460752303423504
let myUInt32 = UInt32(truncatingBitPattern: myInt)
Run Code Online (Sandbox Code Playgroud)
这很简单:
let int: Int = 40
let uint = UInt32(i)
Run Code Online (Sandbox Code Playgroud)
在你的情况下,只是通过
UInt32(Port)
Run Code Online (Sandbox Code Playgroud)
对于端口不是问题,但在其他情况下一定要注意溢出
旁注:在swift中,使用较低的驼峰案例命名变量是一种好习惯,因此第一个字母为小写
| 归档时间: |
|
| 查看次数: |
45531 次 |
| 最近记录: |