【问题标题】:What is the c# equivalent of this c++ code? [duplicate]这个 c++ 代码的 c# 等价物是什么? [复制]
【发布时间】:2021-06-15 21:31:55
【问题描述】:
unsigned char setBit(unsigned char ch, int n)
{
    unsigned char mask = 1 << n;
    return ch | mask;
} 

我想在 c# 中将 n 位更改为 1,但我做不到。我只有 c++ 示例。

【问题讨论】:

  • Stack Overflow 是一个问答网站,而不是代码翻译服务。尝试先自己翻译代码,然后在遇到困难时来找我们,确保向我们展示您尝试过的内容并创建minimal reproducible example
  • 只需将unsigned char 更改为byte,其他都一样。
  • 这能回答你的问题吗? Which datatype is used for unsigned char in C#?。与 unsigned char 唯一的区别是 C# 中的字节。
  • 将您知道的语言逐行翻译成您不知道的语言在某些时候注定会失败。您“翻译”的方式是充分了解源语言和目标语言以了解源语言在做什么,然后基本上丢弃源语言版本并用目标语言实现相同的东西。
  • @Denica 我认为您对该行的问题是 == 比 | 具有更高的优先级。尝试 b | 周围的括号(1

标签: c# c++ bitmap bit bitmask


【解决方案1】:

在 C++ 中,char 数据类型是一个字节。在 C# 中,等效类型是 byte

在 C# 中,char 数据类型是 Unicode UTF-16 字符(2 个字节)。

byte setBit (byte b, int pos)
{
    return (byte)(b | 1 << pos - 1);
}

【讨论】:

  • @gunr2171 我想你读错了。我说的是一个字节的 C++ char 数据类型。
  • @gunr2171 公平地说,Giles 确实说过“在 C# 中,char 数据类型是 Unicode UTF-16 字符。” - 关键位在此之前:“在 C# 中,等效类型是字节”;如果答案实际上解决了如何解决问题中的问题,那就太好了
  • "char 数据类型是一个字节" - 是的,这是正确的。但是 CHAR_BIT 不一定是 8,尽管它可能在任何运行 C# 虚拟机的机器上。因此,一般而言,char 与 C# byte 不同。
  • ...也就是说,这是在 C# 中完成任务的正确方法。投赞成票。
  • 我发现了类似的问题,我在其中找到了我的答案。就是这个stackoverflow.com/questions/24250582/….. 不知道为什么之前找不到。抱歉,感谢大家抽出宝贵时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
  • 1970-01-01
  • 2013-09-06
  • 1970-01-01
相关资源
最近更新 更多