gpt4 book ai didi

swift - 在 Swift 中为 int32 pixelFormat 输入什么?

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

我想使用函数 CGDisplayStreamCreateWithDispatchQueue。

文档告诉我为“pixelFormat”使用以下可能的值:(参数需要是一个Int32)

The desired Core Media pixel format of the output frame data. The value must be one of the following:
'BGRA': Packed Little Endian ARGB8888
'l10r': Packed Little Endian ARGB2101010
'420v': 2-plane "video" range YCbCr 4:2:0
'420f': 2-plane "full" range YCbCr 4:2:0

如果我输入例如“BGRA”,Xcode 会告诉我这是一个无效参数。怎么办?

最佳答案

C 语言中,您可以指定一个多字符常量,它会产生一个 int32 值。 Swift 本身不提供此功能。您可以只传递等效常量。

对于 'BGRA',您需要传递 0x424752410x42B的ASCII值,0x47G的ASCII值,等等

我通过在 C 中创建这个函数验证了这一点:

int32_t convertBGRA() {
int32_t i = 'BGRA';

return i;
}

并从 Swift 调用它:

print(String(format: "%x", convertBGRA()))  // output: "42475241"

以下是所有值:

let pixelFormat_BGRA = 0x42475241
let pixelFormat_l10r = 0x6c313072
let pixelFormat_420v = 0x34323076
let pixelFormat_420f = 0x34323066

这是 Int32 的扩展,它从 4 个字符的字符串中初始化值。

extension Int32 {
init?(char4: String) {
var result: UInt32 = 0

let scalars = char4.unicodeScalars

if scalars.count != 4 {
return nil
} else {
for s in scalars {
let value = s.value
if value > 255 {
return nil
}
result = result << 8 + value
}
self = Int32(bitPattern: result)
}
}
}

对于 'BGRA' 的输入,您将使用:

Int32(char4: "BGRA")!

关于swift - 在 Swift 中为 int32 pixelFormat 输入什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33330841/

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