c - 用 C 语言构建二进制表示

标签 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。它这样做了,但散布在所有二进制数字中的是一个带有重音符号的大写字母 I。为什么会发生这种情况?

最佳答案

要将 32 个二进制数字作为字符串保存,result 需要为 33 个字节,并且 null 位于 result[32](第 33 个字符),而不是 结果[31]

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

result[31] = "\0";

至:

result[32] = '\0';

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

关于c - 用 C 语言构建二进制表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21686795/

相关文章:

c - 为 ARM 编译时出现 GCC 错误

c# - 这个测试是否正确 : if(obj1. type == obj2.type == 1)?

C 程序使用 GCC 在 Linux 上仅提供 UTC 时间作为本地时间

用 1 和 2 求整数的二进制的算法

python - 如何将 unicode 转换为 4 位二进制表示形式?

c - 在 imx6 wandboard quad 上读取 GPIO

c - 如何转义字符串中的字符并显示转义的字符?

ios - IOS 二进制文件中的 LC_DATA_IN_CODE

c中的颜色变化bmp

version-control - 如何创建相同文件的相同 gzip?