C# 中的无符号字符使用哪种数据类型?

Posted

技术标签:

【中文标题】C# 中的无符号字符使用哪种数据类型?【英文标题】:Which datatype is used for unsigned char in C#? 【发布时间】:2014-05-25 04:09:18 【问题描述】:

我有一个 C++ 应用程序。在该应用程序中,函数之一是返回 unsigned char 值。我想将该函数转换为 C# 代码。但是,我对 c++ 编程没有足够的知识。我想知道 C# 中的 c++ unsigned char 将放置什么数据类型。

c++函数是这样的

unsigned char getValue(string s)

    //SOME CODE HERE

【问题讨论】:

谢谢大家给我快速的答复。所有答案都是正确的,对我有帮助。 【参考方案1】:

unsigned char 在 C# 中的等价物是 byte

byte getValue(string s)



第二种选择:如果你使用unsigned char作为字符存储,你应该使用char

char getValue(string s)




您必须记住,C++ 平等对待字符和 8 字节值。因此,例如在 C++ 中:

'A' + 'B' == 65 + 66 == 65 + 'B' == 'A' + 66

您必须从上下文中检查unsigned char 是字符还是数字。从作为参数传递的字符串中,可以猜测,该函数处理字符,所以很可能您需要char C# 类型。

【讨论】:

【参考方案2】:

您正在寻找byte 类型。此外,this question 有额外的映射,如果你需要的话。

如果您的C# 代码应该将值视为字符,那么char 类型就是您想要的。我们一直建议 byte 的原因是因为我们假设您希望将该值视为 8-bit 整数。

【讨论】:

【参考方案3】:
C++ unsigned char = C# byte
C++ char = C# sbyte 

【讨论】:

【参考方案4】:

使用char。 C# 中的 char 既没有签名也没有无符号。它是 16 位值。

如果你不想保留字符,而是实际的二进制数,那么你应该选择byte,这是一个无符号整数,就像c++中的unsigned char一样。

另请参阅:What is an unsigned char?

【讨论】:

那么,我的函数是返回 ascii 字节还是任何字母字符? @Nimesh,您的函数正在返回一个 8 位值,您的程序可以选择解释它选择的任何方式。 两者。所以要做出选择,我们需要找出实际需要的数据类型,所以我们需要方法体。例如,如果该方法返回给定字符串的第一个字符,则返回类型为char。如果它会返回字符串中的元素个数,byte 应该更好(除了int)。

以上是关于C# 中的无符号字符使用哪种数据类型?的主要内容,如果未能解决你的问题,请参考以下文章

工业物联网网关变量的数据类型

C#核编之内建数据类型

C#编组来自C++ DLL的无符号字符返回值[重复]

C#学习路途之一数据类型中的值类型

(字符型变量你懂吗?)乐创DIY C语言讲义​——3.5节

c#中的数据类型