繁体   English   中英

如何在C中将二进制数转换为两位十进制数

[英]How to convert a binary number to a two-digit decimal number in C

我需要将二进制数字转换为两位十进制数字。 例如:

01111 becomes 15
00011 becomes 03

我不是简单地尝试显示数字。 我需要将每个数字放入一个int变量中。 说我有两个int变量,leftnum和rightnum。

然后在第一个示例中,leftnum = 1和rightnum =5。在第二个示例中,leftnum = 0和rightnum = 3。

有两个限制使得这有点困难。 mod和/只能与2的幂一起使用。

int i = 0;
do {
    i ++;
} while (i * 10 <= originalInt);

int leftInt = i - 1; // e.g. for "originalInt = 40" -> "i = 5", so we must decrement 1
int rightInt = originalInt - leftInt * 10;

或更紧凑,使用更少的变量:

int leftInt = 0;
do {leftInt ++;} while (leftInt * 10 <= originalInt);
int rightInt = originalInt - (-- leftInt) * 10;
#include <stdio.h>

int main()
{
  int i = 23;
  int left, right;

  right = i;
  left = 0;
  while(right > 9) {
    right -= 10;
    left += 1;
  }
  printf("%d %d\n", left, right);
}

要么

#include <stdio.h>

int main()
{
  int i, left, right;
  for(i = 0; i < 100; i++) {
    left = ((i+1)*51) / 512;
    right = i - (left*10);
    printf("%d %d %d\n", i, left, right);
  }
}

这是英文的一般程序:

  1. 将数字转换为十进制,即C的int类型(如果位字符串由字符串表示),否则跳过此步骤。

  2. 使用sprintf获取int的十进制表示形式。

  3. 您可以从字符串中选择每个字符,并根据require int存储相应的数字。

暂无
暂无

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

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