将ascii字符十进制值的字符串转换为二进制值
问题描述:
我需要帮助编写一个将完整句子转换为二进制代码(ascii - > decimal - > binary)的程序,反之亦然,但我无法做到这一点。现在我正在使用ascii-> binary。将ascii字符十进制值的字符串转换为二进制值
ascii字符有十进制值。 a = 97
,b = 98
,等我想获得一个ASCII字符的十进制值,并将其二进制转换成dinary或二进制小数,如10(十进制)很简单:
10 (decimal) == 1010 (binary)
所以ASCII十进制值a和b是:
97, 98
这在二进制是(加上空格字符是32,感谢):
11000011000001100010 == "a b"
11000011100010 == "ab"
我已经写此:
int c_to_b(char c)
{
return (printf("%d", (c ^= 64 ^= 32 ^= 16 ^= 8 ^= 4 ^= 2 ^= 1 ^= 0));
}
int s_to_b(char *s)
{
long bin_buf = 0;
for (int i = 0; s[i] != '\0'; i++)
{
bin_buf += s[i] ^= 64 ^= 32 ^= 16 ^= 8 ^= 4 ^= 2 ^= 1 ^= 0;
}
return printf("%d", bin_buf);
}
代码示例
的main.c
int main(void)
{
// this should print out each binary value for each character in this string
// eg: h = 104, e = 101
// print decimal to binary 104 and 101 which would be equivalent to:
// 11010001100101
// s_to_b returns printf so it should print automatically
s_to_b("hello, world!");
return 0;
}
为了详细描述,在for
环路在所述第二片段遍历字符阵列中的每个字符,直至碰到空终止符。每次它计算一个角色时,它都会执行该操作。我正在使用正确的操作吗?
答
也许你想要的东西,像
void s_to_b(const char*s)
{
if (s != NULL) {
while (*s) {
int c = *s;
printf(" %d", c);
s++;
}
putc('\n');
}
}
什么是“完整的句子转换成二进制代码”是什么意思? – 2011-12-27 06:05:38
您可能需要将其缩小到更具体的范围。一般来说“不行,为我做”不是很有成效。 – 2011-12-27 06:06:26
为什么你编码'c^= 64'这意味着'c = c^64'?我不明白,如果它是功课,你的要求是什么? – 2011-12-27 06:10:59