gpt4 book ai didi

将 char 转换为二进制

转载 作者:行者123 更新时间:2023-11-30 15:29:45 25 4
gpt4 key购买 nike

我一直在从事一个项目,其中我们需要将名称的字母转换为其二进制等价物。

A 部分要求我们:

Display (write) each bit by alphabet '0' or '1' in each byte of your last name, e.g.

B 部分要求我们:

Use the first character from the entered name as a mask-in (bitwise OR) mask for other characters and display them out like that in part A.

我的 A 部分代码可以工作并输出正确的二进制序列。

输出:http://imgur.com/kAAhHyc

不幸的是,我的代码似乎不适用于 B 部分。

我的代码:http://imgur.com/cKmQzyS

#include <stdio.h>
#include <string.h>

main() {
int i;
int len;
char name[20];
char len_str[20];
char a;
int x = 0;
int num;
int num2;
int y;
char a1;
char a2;
int z;
int num3;

write(1, "Enter your name: ", 17);
len = read(0, name, 20);
len--;

num = len;
num2 = len;
num3 = len;
/* part 1--------------------------------------*/
while (num > 0) {
a = name[x];
printf(&a);
printf(" ");

int mask = 128;
while (mask > 0) {
printf("%d", (a & mask) > 0);
printf(" ");
mask >>= 1;
}
x = x + 1;
printf("\n");
num--;

}

printf("\n");

/* part 2--------------------------------------*/
y = 0;
while (num2 > 0) {
a1 = name[y];
int mask2 = name[0];
printf("0");
printf(" ");
while (mask2 > 0) {
printf("%d", (a1 | mask2) > 0);
printf(" ");
mask2 >>= 1;
a1 <<= 1;
}
y = y + 1;
printf("\n");
num2--;
}
printf("\n");

}

正如您从我的代码和输出中看到的(A 部分输出是第一个二进制 block ,B 部分是第二个),我在上面发布的内容似乎是错误的。我同时移动掩码和字母中的位,但得到了错误的输出。我将 AND“&”更改为 OR“|”。掩码是名称的第一个字母,即 name[0],而不是我在 A 部分中使用的 128。即使当我以相同方向移动两个位时,即 mask2 >>= 1 和 a1 >> = 我仍然得到错误的输出。有人可以帮我解决这个问题吗?我知道我已经很接近了,一定是一些小错误阻碍了我。

谢谢

最佳答案

将显示二进制输出的代码放入函数中,命名为void showBinary(char ch)

第一部分是说要执行 showBinary(name[x]), for x in [0, strlen(name))

第二部分是说对 [1, strlen(name)) 中的 x 执行 showBinary(name[0] | name[x])

在这两个任务中,“showBinary”操作的输入和调用发生变化。 “showBinary”的实际代码/操作是相同

使用函数来命名该操作并对代码进行分组可以使区别更加清晰,并且可以从逻辑角度更容易地识别差异。在本例中,差异在于第二种情况下“showBinary”函数循环内对 (a1 | mask2) 的[不正确]更改。

关于将 char 转换为二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26082149/

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