byte vs char vs int 类型

byte vs char vs int Types

我有一些基本问题。 在 C 中没有 byte 类型,所以我将其定义为 unsigned char 以将缓冲区保存到我需要读取和处理的系统文件。 我的 C 程序现在需要使用具有 byte 内置类型但定义为 'unsigned int'.

的 C#

这会不会导致在两个系统之间来回转换时出现任何问题? 我认为无论使用什么 "word" 底层存储都保持不变,对吧。所以做一些像

//C#
//byte[] b=new byte[2];
//b[0]=11;
//b[1]=12;
C
byte b[2];//unsigned char
b[0]=(byte)(11);
b[1]=(byte)(12);

两者无所谓

自 C99 以来,C 标准定义了 int8_t。将其用于 8 位类型,或 uint8_t 用于无符号模拟。

虽然在结构中使用此类类型时要小心,但不能保证相邻成员在内存中是连续的。不过你可以使用数组。

只要 C 中的值类型是 'int' 数字,来回转换应该没有问题。