定义一个字节的方法很多

bor*_*den 23 byte typedef objective-c ios

我在objective-c中使用哪一个(特别是在iOS上)会有所不同吗?我认为它来自从C和它的类型继承,以及继承从Mac OS,iOS系统是基于类型的,但我不知道我应该使用哪一个:

unsigned char 从......好......编译器?

uint8_t 来自stdint.h

UInt8 来自MacTypes.h

Byte 来自MacTypes.h

Bytef 来自zconf.h

我知道各种defs是出于可移植性的原因,并且使用类似的文字unsigned char并不是一个好的未来想法(大小可能会改变,事情最终会像Windows API一样).我想就如何找到最适合我的用途的一些建议.如果我只是愚蠢的话,还是好舌头鞭挞......

编辑:只是为了更多的信息,如果我想要的东西总是 1字节,我应该使用uint8_t(看起来不会像这样的名字改变)?我想UInt8也不会改变,但我发现UInt32的定义因处理器是否为64位而有所不同.

进一步编辑:当我说字节时,我特别指的是我想要8位.我正在进行像素压缩操作(32位 - > 8位)用于磁盘存储.

小智 11

这完全无动于衷.无论你使用哪个,它最有可能最终成为一个unsigned char.如果你想让它看起来不错,不过,我建议你使用uint8_t<stdint.h>.

两者都不会随着架构而改变.char始终为1个字节按C标准,这将是从一个用户的角度无法忍受如果在一实现中,UINT8突然变得16位长.

(但事实并非如此,char要求是8位宽,只有当类型的名称表明它是8位长时,那么任何合理的实现确实会对它进行类型化.顺便提一下,一个字节(这char是一个8位单位,即一个八位字节.)