gpt4 book ai didi

c - char、int 和 float 的二进制表示

转载 作者:太空宇宙 更新时间:2023-11-04 08:39:47 25 4
gpt4 key购买 nike

#include<stdio.h>

int binary(char* a){
int bit_index = (sizeof(*a) * 8 - 1);
int i;
printf("\n bit_index : %d *a : %c \n",bit_index,*a);
for(i = 0; i < bit_index; i++){
printf("%d",(*a & (1 << i)));
}
printf("\n");
return 0;
}
int main(){
char a = 'a';
int b = 67;
float c = 3.14;
binary(&a);
return 0;
}

我正在将 char 转换为二进制表示形式。上面的程序给出了一个垃圾 o/p,

bit_index : 7 *a : a 
100003264

我希望上面的程序将任何类型变量的输入转换为二进制表示。

所以我使用 void* 而不是 char* 作为 func binary(void *) 的参数。但是我在使用时出现错误,

binary.c: In function ‘binary’:
binary.c:17:50: warning: dereferencing ‘void *’ pointer [enabled by default]
binary.c:17:2: error: invalid use of void expression
binary.c:19:16: warning: dereferencing ‘void *’ pointer [enabled by default]
binary.c:19:3: error: void value not ignored as it ought to be

有没有办法创建一个函数来输入任何类型的变量并输入其二进制表示。

最佳答案

您不能取消引用 void* 指针。相反,要获得二进制表示,将 a(二进制参数)作为 void* 并将其转换为 char* 以便能够逐字节显示它。

您还应该采用大小参数,因为各种数据类型具有不同的大小。因此,对二进制的调用应该类似于 binary(&a, sizeof(a))

关于c - char、int 和 float 的二进制表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24228945/

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