字符比较和处理变量

标签 c ubuntu unix binary char

所以我对一般编程非常陌生,对于基于 C 和 UNIX 的操作系统更是如此。
我正在尝试学习如何用 C 编写代码,并且正在开发 ubuntu OS。我在网上找到了一些初学者级别的任务来开始。所以现在我正在尝试完成这项任务:
完成函数code2abc的实现,使其返回
对应于类型参数代码中指定的 2 位代码的字符
字符。函数返回的字符应根据
代码的以下位内容:
代码/返回值:00000001/'A' --- 00000010/'B' --- 00000011/'C'
预期输出:

  • code2abc(1) = 'A'
  • code2abc(2) = 'B'
  • code2abc(3) = 'C'
  • code2abc(0) = ' '
  • cod2abc(其他) = ' '

  • 首先,我并没有真正理解 2 位代码的含义以及如何使用它。我在网上查过,但没有找到任何帮助。其次,据我所知,指令暗示函数的输入是一个 char 值,这如何响应那里提到的二进制代码?到目前为止,我已经尝试过:
    char code2abc(char code) {
        if ((code <'1' != 0) || (code >'3' != 0)) { // referring to ASCII values of the chars
            return ' ';
    }
        return (code + 52); // 52 is the difference of ASCII values between A,B,C and 1,2,3  
    }
    
    我习惯于使用 java,所以我尝试使用我所知道的,但我有一种感觉我很遥远。当我编译文件时,系统提醒我没有使用变量'code',当我运行它时它返回''(空格)。我正在使用 VIM 编辑器,是否存在语法错误导致编译器无法识别变量?
    真的很感激任何想法或提示!

    最佳答案

    您可以使用简单的 switch 语句轻松完成此操作,例如:

    char code2abc(const int code){
        switch(code){
            case 0b01: return 'A';
            case 0b10: return 'B';
            case 0b11: return 'C';
            default: return '';
        }
    }
    
    这里没有发生真正的转换,只是一个简单的 if-else 关系。我认为他们希望您做的是查看二进制并将其转换为十进制?如果是这样,上面的代码将等效于:
    char code2abc(const int code){
        switch(code){
            case 1: return 'A';
            case 2: return 'B';
            case 3: return 'C';
            default: return '';
        }
    }
    
    至于两位码的“意义”,是没有的。它只是分配给字母“A”、“B”和“C”的任意映射。你不会在任何约定中找到它。

    关于字符比较和处理变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67743390/

    相关文章:

    java - 由于软件包损坏,无法在 Ubuntu 中安装 java

    c - 无法理解 V2DIP FTDI 板的键盘值

    在C中通过memcpy将一个矩阵复制到另一个矩阵

    python - 错误: value of type 'PyObject' (aka '_object' ) is not contextually convertible to 'bool'

    linux - 使用文件输入作为 shell 脚本的标准输入不起作用

    c++ - 错误 [outdebug 不存在] 在 Visual Studio 代码中调试基本 C++

    linux - 如何在一个制表符分隔文件中复制行并替换多个字符串

    c++ - Linux服务方法

    c - 在c程序中,当主线程终止时,整个进程是否终止?

    c - 在 Linux 上用 C 语言使用 RAW Socket 发送组播