首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符串转换为8位二进制

问将字符串转换为8位二进制
EN

Stack Overflow用户
提问于 2020-03-01 09:24:17
回答 1查看 367关注 0票数 0

我正在尝试将字符串转换为8位二进制数。到目前为止,我的代码可以将每个字符值转换为二进制,但不能转换为8位,并且顺序不正确。

我的代码如下所示。

代码语言:javascript
复制
#include <stdio.h>

int main()
{
   char startingString[40] = "Man";
   int i;
   int j = 0;
   int k;
   int p;
   int decimalString[3000];
   int binaryString[3000];
   int quotient;
   int decimal;
   int testString[3000];

   // Convert the ASCII characters into their decimal equivalents. 
  for(i=0; i<3; i++){
      decimalString[i] = startingString [i];
      //testString[i] = startingString [i];
     // printf("%d\n", decimalString[i]);
  }


     for(k=0; k<3; k++){
     quotient = decimalString[k];
     decimal = decimalString[k];
     while (decimal != 0){
         quotient = decimal%2;
         binaryString[j] = quotient;
         decimal = decimal/2;
         j++;

     }



    for(p=j-1; p>=0; p--){
      printf("%d", binaryString[p]);

        }

    }

    return 0;
}

我想知道我可以做些什么来修复代码的顺序,并将其转换为每个ASCII字符的8位。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-03-01 23:59:19

假设您喜欢先打印二进制值MSB。您没有向我们显示预期的输出…

因为这听起来像是家庭作业或类似的学习任务,所以我不会发布完整的源代码。此代码片段可能会对您有所帮助:

代码语言:javascript
复制
k = 0;
for (j = 1 << 7; j != 0; j >>= 1) {
    binaryString[k] = (startingString[i] & j) != 0;
    k++;
}

  • 表达式1 << 7的计算结果是一个仅具有8位字符集的MSB的值。
  • 指令j >>= 1将此位下移1位。
  • 如果j中的值为1( LSB集)并右移,则结果为零。将结果与零进行比较,结果为1或0,对于true和false,分别为

注意:为了遵循逻辑和值,在感兴趣的地方插入一些printf()并打印感兴趣的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60471189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档