无符号整数转二进制逆序
在C语言中,要实现一个函数来传入一个八位无符号整数,并返回其二进制倒序的字符串,你可以使用以下步骤:
-
分配足够的堆空间来存储倒序后的二进制字符串。
-
利用位运算符获取当成8位无符号整数的二进制数
-
可以从高位往遍历也可以从低位往高位遍历
-
从高遍历就把字符串从尾部开始插入,从低位遍历就把符串从头部开始插入
-
在字符串末尾插入‘\0’
-
返回生成的字符串
-
在主程序中释放堆空间
代码如下
/******************************************************************* * * 函数名称: Dec2OCT_reversed * 函数功能: 将八位无符号整数,逆序生成二进制字符串 * 函数参数: * @a :unsigned char num 无符号的整数 * 返回结果: * 注意事项: None * 函数作者: [email protected] * 创建日期: 2024/05/03 * 修改历史: * 函数版本: V1.0 * *****************************************************************/ char* Dec2OCT_reversed(unsigned char num) { // 由于字符串是遍历到'\0'才停止所以要申请除8位二进制还需多一位 '\0' char *binary = (char *)malloc(9 * sizeof(char)); if (binary == NULL) { // 内存分配失败处理 perror("Memory allocation failed"); exit(EXIT_FAILURE); } // 遍历8位,将每一位转换为字符并存储到字符串中 for (int i = 0; i <= 7; i++) { // 将低位的二进制字符串依次插入从数组头部开始插入 binary[i] = (num & (0x80>>7-i)) ? '1' : '0'; } // 末尾添加字符串结束符 binary[8] = '\0'; // 返回生成的字符串 return binary; }
如果该函数接口代码有什么问题,请将问题发至网易邮箱 [email protected],作者将及时改正,欢迎与各位老爷交流讨论。
麻烦三连加关注!!!!
比心