gpt4 book ai didi

将数字转换为二进制

转载 作者:行者123 更新时间:2023-11-30 19:46:41 25 4
gpt4 key购买 nike

我正在以一种特殊的形式将十进制转换为二进制,但是当我尝试将生成的二进制存储在数组位中时,如果我确实打印出来,那么在完成后,它会在 no 后打印垃圾。位,这导致二进制到十进制函数中出现很多问题,该函数期望输入为 1 和 0 的 char 数组类型。问题1 为什么打印尺寸错误2 为什么显示垃圾3 为什么out只显示初始化位

输入的值为4

void toGolomb(int value) {
char out[20];
char bits[8];
int count=0,num=0, output;
while(value>0) {
int remainder=value%2;
out[count]=(char)(((int)'0')+remainder);
value=value/2;
count++;
}
int amount=count-1;
int i;
for(i=0;i<=amount;i++) {
bits[num]=(char) '1';
num++;
}
if(amount>=0) {
out[amount]='0';
for(i=amount;i>=0;i--){
bits[num]=(char) out[i];
num++;
}
} else {
bits[num]=(char) '1';
num++;
}
if(comflag==0) {
int a =strlen(bits);
printf(" length is %d \n",a);
printf("%s\n",bits);
output= binary_decimal(bits);
fputc(output,stdout);
}
}

输出:

length is 17

111000c�����>�
205

最佳答案

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

//http://en.wikipedia.org/wiki/Golomb_coding
char *toGolomb(int value){
static const int m = 4, rbits_len = 2;//rbits_len = log 2 m
static const char *rbits[] = {"00", "01", "10", "11"};
char *bits;
div_t x = div(value, m);
bits = malloc(x.quot + 1 + rbits_len + 1);
memset(bits, '0', x.quot);
bits[x.quot] = '1';
memcpy(bits + x.quot + 1, rbits[x.rem], rbits_len+1);
return bits;
}

int main(){
int i;
for(i=0;i<=10;++i){
char *bits = toGolomb(i);
printf("%d:%s\n", i, bits);
free(bits);
}
return 0;
}

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

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