gpt4 book ai didi

swift - 我想在 swift 中使用 outputStream.write() 通过输出流发送 Int

转载 作者:可可西里 更新时间:2023-11-01 02:53:17 28 4
gpt4 key购买 nike

我必须通过输出流发送字节数组的长度,下面是我使用的代码,但出现此错误:

"Cannot convert value of type 'UnsafePointer' to expected argument type 'UnsafePointer<_>'"

withUnsafePointer(to: &len) { (pointer: UnsafePointer<Int>) -> Void in
outputStream.write(UnsafePointer<UInt8>(pointer), maxLength: 4)
}

如果有人能告诉我我哪里出错了或建议替代方法。

最佳答案

首先,如果要按主机顺序向OutputStream 发送4 个字节,最好将var 声明为Int32。 , 不是 Int .

并且您的代码使用了曾经在某些古老的 Swift 中发现的转换指针类型的方式。

试试这个:

var len4 = Int32(len)
withUnsafeBytes(of: &len4) { bufPtr in
outputStream.write(bufPtr.baseAddress!.assumingMemoryBound(to: UInt8.self), maxLength: bufPtr.count)
}

或者,如果你想按网络顺序发送 4 个字节,如标签所建议的,你可能需要稍微修改上面的代码。

var len4 = Int32(len).bigEndian
withUnsafeBytes(of: &len4) { bufPtr in
outputStream.write(bufPtr.baseAddress!.assumingMemoryBound(to: UInt8.self), maxLength: bufPtr.count)
}

关于swift - 我想在 swift 中使用 outputStream.write() 通过输出流发送 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51567920/

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