【问题标题】:converting uchar in c++在 C++ 中转换 uchar
【发布时间】:2011-03-10 06:37:57
【问题描述】:

如何将 uchar 转换为 int?

【问题讨论】:

  • 这取决于unsigned char 代表什么,以及您希望int 代表什么。特别是对于字符代码。否则,如果您只想保留该值,只需分配(请注意,当 unsigned char 不能表示为 int 时,这具有正式未定义的行为,但只能在具有 sizeof(int) == 1 的机器上发生,例如 TI 信号处理器)。
  • -1 简而言之,到目前为止,五个答案都遗漏了一些细节,如果对问题进行了编辑,可能会使这个问题成为一个真正的问题。如果您想询问这些细节,请更具体一些。因为这个问题太模糊,太微不足道而不能成为一个真正的问题,所以我投了反对票。
  • 我觉得说别人的问题不真实有点粗鲁和侮辱。
  • “不是一个真正的问题”是关闭 SO 问题的常见原因之一。您可以在元聊天中解决该问题的粗鲁和侮辱性。你的解决方案是什么?
  • @Alf P. Steinbach:我会说“没有足够的细节”而不是“不是一个真正的问题”。

标签: c++


【解决方案1】:

如果ucharunsigned char 的typedef,那么很简单:

unsigned char c = 'A';
int i = c; //automatic conversion uchar into int!

铸造(即int i = (int)c)是矫枉过正。

【讨论】:

    【解决方案2】:
    #include <iostream>
    
    int main(int argc, char *argv[])
    {
        unsigned char x = '\xff';
        std::cout << static_cast<int>(x) << std::endl;
        return 0;
    }
    

    输出:

    255
    

    【讨论】:

      【解决方案3】:

      试试:

      void func(int x)
      {
      }
      
      int main()
      {
          unsigned char c = 'c';
          int           t = c;   // auto converts to int
      
          func(c);   // Works the same (auto converts)
          func(t);   // Or use the t variable.
      }
      

      【讨论】:

        【解决方案4】:

        只需将其分配给 int 变量即可进行隐式转换

        unsigned char c = 'c';
        int i = c;
        

        或者显式地对变量进行类型转换

        unsigned char c = 'c';
        int i = (int)c;
        

        【讨论】:

        • 不需要演员表。这里有自动转换。
        • 这实际上是我的偏好(有时编译器感觉像是优化了一些东西),但无论如何都要编辑。 @Nawaz 我看不出演员阵容是如何过度杀伤的。据我所知,它不会影响编译后的二进制文件,尽管我同意这有点乏味。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-11
        相关资源
        最近更新 更多