【发布时间】:2018-03-28 13:28:45
【问题描述】:
我有以下代码将整数转换为从 0 到 15 的每个整数的二进制表示,因此我需要整数的 4 位表示。
它的代码工作正常,但问题是二进制的长度不正确,所以当给定 1 作为 int 时,它返回 1 作为输出而不是 0001。 对于 2,它应该返回 0010,但它返回 10。
如何更改此代码以使其返回正确的表示形式?打印结果时使用 printf %04d 是可以的,但仅用于打印,因为实际值仍然不同。
我正在尝试另一种方法,将整数转换为字符串,然后根据其长度在其前添加 0,直到长度为 4。
#include <stdio.h>
#include <stdlib.h>
int convert(int dec)
{
if (dec == 0)
{
//printf("Base c\n");
return 0;
}
else
{
//printf("Rec call\n");
return (dec % 2) + 10 * convert(dec / 2);
}
}
int main(int argc, char *argv[])
{
// argc is number of arguments given including a.out in command line
// argv is a list of string containing command line arguments
int v = atoi(argv[2]);
printf("the number is:%d \n", v);
int bin = 0;
if(v >= 0 && v <= 15){
printf("Correct input \n");
bin = convert(v);
printf("Binary is: %04d \n", bin);
printf("Binary is: %d \n", bin);
}
else{
printf("Inorrect input, number cant be accepted");
}
我需要这个方法来做什么: 1.给定一个整数 2. 返回这个整数的 4 位表示,不确定它应该是 int 还是 string。 3. 例如 convert(2) 应该返回 0010,6 返回 110,我希望这个是 0110 等等。 convert 方法应该为我做到这一点。我希望我清楚我会发生什么。
这应该返回:
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
and so on
15 1111
【问题讨论】: