gpt4 book ai didi

ios - 如何在 Swift 中使用 htonl 设置整数字节序?

转载 作者:行者123 更新时间:2023-11-30 13:24:42 25 4
gpt4 key购买 nike

我尝试在 Swift 中使用 htonl() 设置整数字节序,但编译器找不到 htonl() 方法。

我一直用这个作为引用:Append NSInteger to NSMutableData

这是我的代码:

import Foundation
import CFNetwork
import CoreFoundation

var data = NSMutableData()
var number : UInt32 = 12
var convertedNumber : UInt32 = htonl(number)
data.appendBytes(&convertedNumber, length: 4)

我刚刚在 Playground 上运行这个。错误是:

Use of unresolved identifier 'htonl'

最佳答案

从 Xcode 6 Beta 3 开始,所有整数类型都有一个 bigEndian 方法,该方法返回整数的大端表示并更改字节顺序(如果需要)。示例:

var data = NSMutableData()
var number : UInt32 = 0x12345678
var convertedNumber = number.bigEndian
data.appendBytes(&convertedNumber, length: 4)
print(data)
// Output: <12345678>

Swift 3 更新:

let data = NSMutableData()
let number: UInt32 = 0x12345678
var convertedNumber = number.bigEndian
data.append(&convertedNumber, length: 4)

或者,使用新的 Data 值类型:

var data = Data()
let number: UInt32 = 0x12345678
var convertedNumber = number.bigEndian
withUnsafePointer(to: &convertedNumber) {
data.append(UnsafeRawPointer($0).assumingMemoryBound(to: UInt8.self), count: 4)
}

关于ios - 如何在 Swift 中使用 htonl 设置整数字节序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37364616/

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