【问题标题】:byte vs char vs int Typesbyte vs char vs int 类型
【发布时间】:2015-01-06 08:21:39
【问题描述】:

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

在两个系统之间来回投射会不会导致任何问题? 我认为无论使用什么“词”,底层存储都保持不变,对吧。所以做类似的事情

//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);

两者无差别。

【问题讨论】:

  • CC++?您是想将您的程序转换为 C# 还是让两个程序相互通信?
  • 注意:那些演员表没用。
  • 有什么问题?您的 byte 类型是 8 位无符号整数值,而 C# 中的 byte 类型也是 8 位无符号整数。

标签: c# c


【解决方案1】:

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

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

【讨论】:

  • 很酷,我必须在程序中使用很多 uintxx_t 但忽略了数字 8。:D 我现在更有信心继续游泳了。
【解决方案2】:

只要 C 中的 valuetype 是 'int'-number,来回转换应该没有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多