使用 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 指针?

Int和Uint8 swift之间的区别

在 Swift 3 中创建 UnsafeMutablePointer<UInt8>

如何在 Swift 2.3 中将 UInt8 转换为 Anyobject

在 Swift 中将 bytes/UInt8 数组转换为 Int