繁体   English   中英

需要帮助从ASCII转换为二进制

[英]Need help converting from ASCII to binary

我对C很新,所以我对它不太了解。 指针是我还没有学到的东西......我需要用十进制和二进制显示单个字符。 在十进制中它很容易,但我不能以任何方式得到它二进制...我得到ASCII数字并将它的模块与2比较,但它显示了一个非常尴尬的数字......代码有什么问题?(它在葡萄牙语这是我的代码:

#include <stdio.h>
#include <conio.c> //library my professor created to assist his students
#include <string.h>
#define MAXIMO 8

int main( void )
{
  char caracter;
  int aux, resto[MAXIMO], contador, decimal, numero;
  printf( "Digite um UNICO caracter: " );
  caracter = getch();
  numero = caracter;
  decimal = caracter;
  aux = 0;
  do
  {
    if (numero % 2 == 0)
    {
      resto[aux] = 0;
    }
    else
    {
      resto[aux] = 1;
    }
    numero = numero / 2;
    aux++;

  }
  while (numero >= '0');
  //system("cls");
  printf( "\n\n%d\n\n", aux );
  printf( "\nCaracter em Binario: " );
  for (contador = aux; contador >= 0; contador--)
  {
    printf( "%d", resto[contador] );
  }
  printf( "\nValor decimal do caracter: %d", decimal );
  getch();
  return 0;
}

我用的东西就像getch(); 并返回0; 最后只是让我的老师不要杀了我......我不完全知道为什么它会在那里,但必须如此。

您的代码在while条件中有一些错误:

#include <stdio.h>
#include <string.h>
#define MAXIMO 8

int main( void )
{
  char caracter;
  int aux, resto[MAXIMO], contador, decimal, numero;
  printf( "Digite um UNICO caracter: " );
  caracter = getchar(); // I used getchar instead of getch()
  numero = caracter;
  decimal = caracter;
  aux = 0;
  do
  {
    if (numero % 2 == 0)
    {
      resto[aux] = 0;
    }
    else
    {
      resto[aux] = 1;
    }
    numero = numero / 2;
    aux++;

  }
  while (numero > 0); // > than 0 not >= '0' 
  //system("cls");
  printf( "\n\n%d\n\n", aux );
  printf( "\nCaracter em Binario: " );
  for (contador = aux-1; contador >= 0; contador--) //aux-1
  {
    printf( "%d", resto[contador] );
  }
  printf( "\nValor decimal do caracter: %d", decimal );
  getchar();
  return 0;
}

NB

  • '0'和0 是不同的
  • > (更大)和>= (大于或等于)具有不同的含义

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM