在C语言中,如何将数组int p = {12, 4, 5};的元素转换成对应的二进制字符串表示?
时间: 2024-09-13 11:17:21 浏览: 40
pku-OJ-solution,在c语言二进制数组源码,c语言程序
在C语言中,将数组`int p = {12, 4, 5}`的元素转换为对应的二进制字符串,通常会涉及到使用库函数`itoa()`或者自定义函数来实现。这里提供一种简单的自定义函数方法,它通过位运算和字符串拼接来完成:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 自定义函数将整数转换为二进制字符串
char* decToBinStr(int num) {
char binary[40]; // 存储最大32位二进制字符串
int i = 0;
while (num > 0) {
binary[i++] = '0' + (num % 2); // 取余数加'0'或'1'
num /= 2; // 整除2取商
}
if (binary[i] == '\0') {
binary[i] = '0'; // 如果最开始是0,添加一位'0'
}
// 逆序字符串,因为原始存储从低位到高位
reverse(binary, binary + i);
return binary;
}
void convertArrayToBinary(char** strArray, int arr[], int size) {
for (int i = 0; i < size; ++i) {
*strArray[i] = decToBinStr(arr[i]);
}
}
int main() {
int p[] = {12, 4, 5};
const int size = sizeof(p) / sizeof(p[0]);
char* binaryArray[size];
for (int i = 0; i < size; ++i) {
binaryArray[i] = (char*)malloc(sizeof(char) * 40); // 预留足够的空间
convertArrayToBinary(&binaryArray[i], p, size);
}
for (int i = 0; i < size; ++i) {
printf("Element %d: %s\n", p[i], binaryArray[i]);
}
// 使用完后记得释放内存
for (int i = 0; i < size; ++i) {
free(binaryArray[i]);
}
return 0;
}
阅读全文