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

时间:2011-03-11 17:23:46

标签: c binary decimal

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

01111 becomes 15
00011 becomes 03

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

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

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

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

#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);
  }
}

答案 2 :(得分:0)

这是英文的一般程序:

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

  2. 使用sprintf获取int的小数表示。

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