C#中用于无符号字符的数据类型是什么?

6

我有一个 C++ 应用程序。在该应用程序中,其中一个函数返回 unsigned char 值。我想将该函数转换成 C# 代码,但是我不太了解 C++ 编程。我想知道在 C# 中会对应于 c++ unsigned char 的数据类型是什么。

这个 C++ 函数的样子大致如下:

unsigned char getValue(string s)
{
    //SOME CODE HERE
}

谢谢大家给我快速的答案。所有的回答都对我很有帮助。 - Shell
4个回答

12

在C#中,unsigned char的等效类型是byte

byte getValue(string s)
{

}

第二种选择:如果您使用无符号字符作为字符存储,则应使用char

char getValue(string s)
{

}

你必须记住,C++同等地处理字符和8字节的值。因此,在C++中:

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

从上下文中需要检查 unsigned char 是字符还是数字。从传递为参数的字符串中可以猜测,该函数处理字符,因此您可能想要一个 char C# 类型。


3
您需要的是 byte 类型。此外,此问题 还有其他映射关系,如果您需要的话。
如果您的 C# 代码要将该值视为一个字符,则应使用 char 类型。之所以我们一直建议使用 byte 是因为我们假设您想将该值视为一个 8位 整数。

2
C++ unsigned char = C# byte
C++ char = C# sbyte 

1
使用char。在C#中,char既不是有符号的也不是无符号的,它是一个16位的值。
如果您不想保留字符,而是实际的二进制数字,则应选择byte,它是一个无符号整数,就像c++中的unsigned char一样。
另请参阅:什么是无符号字符?

那么,我的函数返回ASCII字节还是任何字母字符? - Shell
@Nimesh,你的函数返回一个8位值,你的程序可以选择以任何方式解释它。 - merlin2011
两者都有可能。所以为了做出选择,我们需要找到实际所需的数据类型,因此我们需要这个方法的主体。如果该方法返回给定字符串中的第一个字符,则返回类型为 char。如果它将返回字符串中元素的数量,则 byte 应该更好(除了 int)。 - Martin Mulder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接