gpt4 book ai didi

c++ - int24 - 24 位整数数据类型

转载 作者:IT老高 更新时间:2023-10-28 23:03:57 30 4
gpt4 key购买 nike

C++ 中有 24Bit 原始整数数据类型吗?

如果没有,是否可以创建一个类 int24 (, uint24 ) ?

它的目的可能是:
* 处理 24 位格式的声音文件
* 在没有 alphachannel 的情况下操作位图数据

提前多谢

哎呀

最佳答案

根据要求,我会使用位域。

struct int24{
unsigned int data : 24;
};

或者,如果分隔更容易,只需使用 3 个字节(字符)。

顺便说一句,您在问题中提到的两个用例通常都使用 32 位整数。在音频处理的情况下,在加载音频 block 时,您通常会转换为 32 位整数(或 float ,最好是防止使用定点或整数数学时出现溢出情况),因为您不会有一次将整个文件保存在内存中。

对于图像数据,人们只是倾向于使用 32 位整数而忽略 alpha 8 alpha 位,或者如果您正在处理紧凑的格式,您可能最好将它们作为字符指针进行操作因为您将所有 channel 分开。无论如何,这将是性能/内存的权衡,因为写一个 int 通常比单独写三个字符要快;但是它会多占用 25% 的内存。

像这样的打包结构是特定于编译器的。但是,在 Visual Studio 中,您将执行以下操作以使结构恰好为 24 位。

#pragma pack(push, 1)
struct int24{
unsigned int data : 24;
};
#pragma pack(pop)

关于c++ - int24 - 24 位整数数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2682725/

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