gpt4 book ai didi

c - 在 C 编程中,如何用左侧的 0 填充我的二进制文件?

转载 作者:行者123 更新时间:2023-11-30 20:17:14 25 4
gpt4 key购买 nike

你们知道如何在我的二进制文件左边填充 0 吗?我的职能是:

void PrintBinaryUpTo(int n)
{
int i;
char string [11];
for(i = 1; i <= n; i++)
{
itoa(i, string, 2);

printf("%d in binary is: %s\n", i, string);
}
}

它返回:

1 in binary is: 1
2 in binary is: 10
3 in binary is: 11

但我希望它是这样的:

1 in binary is: 0000000001
2 in binary is: 0000000010
3 in binary is: 0000000011

编辑:我是这样做的,但我很确定有更聪明的方法可以做到这一点。

void PrintBinaryUpTo(int n)
{
int i;
char string [11];
char result[11];
for(i = 1; i <= n; i++)
{
itoa(i, string, 2);

switch(strlen(string))
{
case 1:
strcpy(result, "000000000");
strcat(result, string);
break;

case 2:
strcpy(result, "00000000");
strcat(result, string);
break;

case 3:
strcpy(result, "0000000");
strcat(result, string);
break;

case 4:
strcpy(result, "000000");
strcat(result, string);
break;

case 5:
strcpy(result, "00000");
strcat(result, string);
break;

case 6:
strcpy(result, "0000");
strcat(result, string);
break;

case 7:
strcpy(result, "000");
strcat(result, string);
break;

case 8:
strcpy(result, "00");
strcat(result, string);
break;

case 9:
strcpy(result, "0");
strcat(result, string);
break;

default:
strcpy(result, string);
break;
}
printf("%d in binary is: %s\n", i, result);
}
}

输出:

1 in binary is: 0000000001
2 in binary is: 0000000010
3 in binary is: 0000000011
4 in binary is: 0000000100
5 in binary is: 0000000101
6 in binary is: 0000000110
7 in binary is: 0000000111
8 in binary is: 0000001000
9 in binary is: 0000001001

最佳答案

不,除非您定义自己的 itoa 函数,否则实际上没有任何方法可以做到这一点。
然而,有一种可移植的方法来简化您的功能:

void PrintBinaryUpTo(int n)
{
int i;
char string[11];
char result[11];
char *zeroes = "000000000";
for(i = 1; i <= n; i++)
{
itoa(i, string, 2);
/* Buffer the number to 10 digits */
strcpy(result, zeroes+strlen(string)-1);
strcat(result, string);
printf("%d in binary is: %s\n", i, result);
}
}

这不需要您拥有的整个 switch case 东西。

另一种不可移植的方法(需要 MSVC)是使用 %010s 格式说明符,它用零填充:

void PrintBinaryUpTo(int n)
{
int i;
char string[11];
for(i = 1; i <= n; i++)
{
itoa(i, string, 2);
/* Buffer the number to 10 digits with %010s */
printf("%d in binary is: %010s\n", i, string);
}
}

关于c - 在 C 编程中,如何用左侧的 0 填充我的二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58310149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com