gpt4 book ai didi

Swift 中的 C union 类型?

转载 作者:IT王子 更新时间:2023-10-29 05:26:00 25 4
gpt4 key购买 nike

如何在 Swift 中声明和使用 C union 类型?

我试过:

var value: union {
var output: CLongLong
var input: [CInt]
}

但它不起作用......

更新:我想使用 union 将 8 字节数 拆分为 2 x 4 字节数

最佳答案

作为 Apple Swift 文档,Enumerations可以做类似的事情,甚至更多。

Alternatively, enumeration members can specify associated values of any type to be stored along with each different member value, much as unions or variants do in other languages. You can define a common set of related members as part of one enumeration, each of which has a different set of values of appropriate types associated with it.

1) 如果您只想将一个 8 字节的数字拆分为 2 x 4 字节的数字,您可能已经知道,Bitwise Operation Swift 可以提供帮助。就像

let bigNum: UInt64 = 0x000000700000008 //
let rightNum = (bigNum & 0xFFFFFFFF) // output 8
let leftNum = (bigNum >> 32) // output 7

2) 如果你想像C语言一样模拟union行为,我试过这样的方法。虽然它有效,但看起来很糟糕。

enum Number {
case a(Int)
case b(Double)

var a:Int{
switch(self)
{
case .a(let intval): return intval
case .b(let doubleValue): return Int(doubleValue)
}
}

var b:Double{
switch(self)
{
case .a(let intval): return Double(intval)
case .b(let doubleValue): return doubleValue
}
}
}
let num = Number.b(5.078)

println(num.a) // output 5
println(num.b) // output 5.078

关于Swift 中的 C union 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30962399/

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