在C中构建二进制表示

时间:2014-02-10 20:02:19

标签: c binary

正如标题所说。我已经看了一些相关的问题,但他们并没有像我一样。以下是代码段:

int convert(int in, unsigned int newBase, char result[]){
    int i = 0;
    for (i; i < 32; ++i){
        if (in % newBase == 0)
            result[i] = '0';
        else
            result[i] = '1';
        in = in / newBase;
        ++i;
    }
    result[31] = "\0";
    return 1;
}

result[]由驱动程序文件保证大小为32.例如,如果我调用convert(1275, 2, result[0]);,它应该构建二进制表示(向后,但这不是现在的问题)11011111001。它这样做,但穿插所有的二进制数字是一个重点在它上面的大写字母。为什么会这样?

1 个答案:

答案 0 :(得分:1)

要将32个二进制数字作为字符串保存,result需要为33个字节,空值为result[32](第33个字符),而不是result[31]

此外,作为char常量的null应该使用单引号,而不是双引号...所以更改:

result[31] = "\0";

为:

result[32] = '\0';

...并确保result有至少33个字符的空间。您看到的奇怪字符可能是尝试编写字符串文字地址的结果 “\ 0”进入result