【问题标题】:Transfer printf to some variable将 printf 转移到某个变量
【发布时间】:2020-11-23 10:29:57
【问题描述】:

我已经将数组的元素转移到 printf 我需要转移到一些 variablestring/bits,因为我需要使用这个 text /string (01000001) 并将其转换为 char (bits => char)。

//main
bool bits2[8] = {0,1,0,0,0,0,0,1};
printf("%c\n", decode_byte(bits2));

//function
char decode_byte(const bool bits[8]){
  int i;

  for (i=0; i<8; i++){
    printf("%d", bits[i]);
  }
  
  
  return 0;
}

【问题讨论】:

  • 不清楚你在问什么。你想得到什么结果?
  • 您的意思是在函数解码 {01000001} 时返回“A”?
  • @Fawad 是的,我的意思是……从控制台中的 printf 或数组 {01000001} 中返回“A”的函数

标签: c variables bit


【解决方案1】:

decode_byte 应该只是从二进制表示转换为实际整数:

#include <stdbool.h>
#include <stdio.h>

char decode_byte(const bool bits[8]) {
    unsigned char c = 0;

    for (int i = 0; i < 8; i++) {
        c = (c << 1) | bits2[i];
    }
    return c;
}

int main() {
    bool bits2[8] = { 0, 1, 0, 0, 0, 0, 0, 1 };
    printf("%c\n", decode_byte(bits2));
    return 0;
}

程序应输出A,即编码为65的ASCII字符,其二进制表示为01000001

【讨论】:

    【解决方案2】:

    你在找这个吗?

    #include <stdio.h>
    
    int main() {
      bool bits2[8] = { 0,1,0,0,0,0,0,1 };
      unsigned char c = 0;
    
      for (int i = 0; i < 8; i++)
      {
        c <<= 1;
        c |= bits2[i];
      }
    
      printf("%02x\n", c);
    }
    

    【讨论】:

      【解决方案3】:
      //function
      char decode_byte(const bool bits[8]){
        int sum = 0;
        for(int i=0;i<8;i++){
            sum += (1<<i)*bits[7-i];
        }
        return (char)sum;
      }
      

      阅读有关 ascii 表的信息。当sum为65时,其在ascii表中的类型转换值为'A'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-21
        • 1970-01-01
        • 1970-01-01
        • 2012-05-04
        • 1970-01-01
        • 2016-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多