gpt4 book ai didi

string - 如何将 String 转换为 UnsafePointer 和长度

转载 作者:IT王子 更新时间:2023-10-29 05:12:54 28 4
gpt4 key购买 nike

当我使用 NSOutputStream 时的 write方法

func write(_ buffer: UnsafePointer<UInt8>, maxLength length: Int) -> Int

我不知道如何转换StringUnsafePointer<UInt8>和长度

我怎样才能快速做到这一点?

最佳答案

您必须先将字符串转换为 UTF-8 数据

let string = "foo bar"
let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!

然后写入输出流

let outputStream: NSOutputStream = ... // the stream that you want to write to
let bytesWritten = outputStream.write(UnsafePointer(data.bytes), maxLength: data.length)

UnsafePointer()强制转换是必要的,因为 data.bytes类型为 UnsafePointer<Void> ,而不是 UnsafePointer<UInt8>正如 write() 所预期的那样方法。


Swift 3 更新:

let string = "foo bar"
// Conversion to UTF-8 data (cannot fail):
let data = string.data(using: String.Encoding.utf8)!

// Write to output stream:
let outputStream: NSOutputStream = ... // the stream that you want to write to
let bytesWritten = data.withUnsafeBytes { outputStream.write($0, maxLength: data.count) }

关于string - 如何将 String 转换为 UnsafePointer<UInt8> 和长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25554986/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com