首页 > 解决方案 > 将 printf 转移到某个变量

问题描述

我已将数组的元素传输到 printf需要传输到某个变量的字符串/位,因为我需要使用此文本/字符串(01000001)并将其转换为 char(位 => 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;
}

代码+控制台

标签: cvariablesbit

解决方案


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,这是编码为的 ASCII 字符65,其二进制表示为01000001.


推荐阅读