使用 Swift 将 UInt8?、String、Int 转换为 String 类型
Posted
技术标签:
【中文标题】使用 Swift 将 UInt8?、String、Int 转换为 String 类型【英文标题】:Convert UInt8?, String, Int to String type using Swift 【发布时间】:2015-11-18 23:39:01 【问题描述】:我正在使用SwiftSocket library,并且我正在尝试将 UDP 套接字从类型“UInt8?、String、Int”接收到的数据转换为 String 类型。
let data = client.recv(1024)
let string = NSData.withBytes(data)
let str = NSString(data: string, encoding: NSUTF8StringEncoding) as String?
当我尝试这样做时,我收到以下错误:
无法将类型 '((UInt8]?,String,Int)' (aka'(Optional>, String, Int)') 的值转换为预期的参数类型 '[UInt8'
如果我打印出“数据”,我会收到以下信息:
(Optional([104, 101, 108, 108, 111]), "127.0.0.1", 34835)
其中 104,101,108,108,111 是字符串“hello”。
有没有办法将读取的数据转换成字符串?
【问题讨论】:
***.com/questions/24196820/… 您必须将其转换为 UInt8 数组。 在您发布的链接中,答案是:var endMarker = NSData(bytes: [0xFF, 0xD9] as [UInt8], length: 2)。 FF和D9是什么?你能给我举个例子吗? 您希望如何将数据表示为字符串? 在我上面给出的代码中,我希望变量 str 是 'hello' 【参考方案1】:您的方法是正确的,但是您忘记从接收到的对象中获取数据。我是data.0
。
let receivedData:([UInt8], String, Int) = ([104, 101, 108, 108, 111], "", 0)
let data = NSData(bytes: receivedData.0, length: receivedData.0.count)
let str = NSString(data: data, encoding: NSUTF8StringEncoding) as! String
print(str)
【讨论】:
以上是关于使用 Swift 将 UInt8?、String、Int 转换为 String 类型的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中将两个字节的 UInt8 数组转换为 UInt16
如何在 Swift 3 中将 [UInt8] 数组复制到 C 指针?
在 Swift 3 中创建 UnsafeMutablePointer<UInt8>