CAFAudioDescription
的{{1}}成员是mSampleRate
类型,但要为其分配类似44100.0的值,我需要先将其转换为big-endian。函数Float64
返回CFConvertFloat64HostToSwapped
CFSwappedFloat64
,而不是uint64_t
。
为什么返回int类型?我甚至无法将其转换为Float64
。
Float64
答案 0 :(得分:1)
我只是Objective-C的初学者,我没有使用过这个API,但是:
uint64_t只是64位的东西。然而,存储在这64位中的内容不是整数,而是转换后的Float64。它没有Float64类型,因为它不是一个Float64,而是一个转换的 Float64。
答案 1 :(得分:1)
当您更改字节序时,该值不再适用于托管系统。它只是一堆。
没有理由不能将这些位存储到任何可以容纳64位的类型,甚至是Float64
。
但是,字节顺序交换通常通过位移和屏蔽完成,并且由于无符号整数类型最适合作业(您不能使用浮点数),因此位模式可能已分配给uint64_t
操作。
您可以在操作后将位移回浮点类型,但这将是额外的步骤,无论如何值都没有意义。
有符号整数转换不必首先转换为无符号整数,因为位操作可以使用它们。尽管如此,对于API一致性这样做会很好,因为交换有符号整数上的数值也没有意义。