我正在尝试将字符串转换为8位二进制数。到目前为止,我的代码可以将每个字符值转换为二进制,但不能转换为8位,并且顺序不正确。
我的代码如下所示。
#include <stdio.h>
int main()
{
char startingString[40] = "Man";
int i;
int j = 0;
int k;
int p;
int decimalString[3000];
int binaryString[3000];
int quotient;
int decimal;
int testString[3000];
// Convert the ASCII characters into their decimal equivalents.
for(i=0; i<3; i++){
decimalString[i] = startingString [i];
//testString[i] = startingString [i];
// printf("%d\n", decimalString[i]);
}
for(k=0; k<3; k++){
quotient = decimalString[k];
decimal = decimalString[k];
while (decimal != 0){
quotient = decimal%2;
binaryString[j] = quotient;
decimal = decimal/2;
j++;
}
for(p=j-1; p>=0; p--){
printf("%d", binaryString[p]);
}
}
return 0;
}我想知道我可以做些什么来修复代码的顺序,并将其转换为每个ASCII字符的8位。谢谢!
发布于 2020-03-01 23:59:19
假设您喜欢先打印二进制值MSB。您没有向我们显示预期的输出…
因为这听起来像是家庭作业或类似的学习任务,所以我不会发布完整的源代码。此代码片段可能会对您有所帮助:
k = 0;
for (j = 1 << 7; j != 0; j >>= 1) {
binaryString[k] = (startingString[i] & j) != 0;
k++;
}1 << 7的计算结果是一个仅具有8位字符集的MSB的值。j >>= 1将此位下移1位。j中的值为1( LSB集)并右移,则结果为零。将结果与零进行比较,结果为1或0,对于true和false,分别为注意:为了遵循逻辑和值,在感兴趣的地方插入一些printf()并打印感兴趣的值。
https://stackoverflow.com/questions/60471189
复制相似问题