我发现以下代码将int / char转换为二进制:
char* int2bin(int value, char* buffer, int bufferSize) {
char *nextChar = buffer + bufferSize-1; // location to write the least significant bit
*nextChar = 0; // add the null terminator
do {
nextChar--;
(value & 1) ? *nextChar = '1' : *nextChar = '0'; // if set set to '1' else '0'
value = value>>1;
if (nextChar == buffer)
break;
} while (value);
return nextChar;
}
我知道我可以做到以下
binString = int2bin(inputBuff[i], binaryBuffer, 17);
fprintf (WriteTo, "%s\n", binString);
但是我现在想将刚进入转换的二进制位之一的binString中的char存储在要传递给其他地方的char数组中,但是由于缺乏理解指针,所以很难知道如何得到它。
我试图通过声明一个char数组并尝试存储该位来做到这一点:
char inputBuffStr[32];
然后...
binString = int2bin(inputBuff[i], binaryBuffer, 17);
inputBuffStr[i] = binString;
作为分析输入的一部分,我每增加一点,binString是char *类型。
我得到一个错误:无法将类型为“ char *”的值分配给类型为“ char”的实体“ inputBuffStr [i] = binString;”
如果有人可以解释我如何得到binString中存在的实际0或1?我似乎无法理解如何对值进行fprintf,但无法将其输出到char数组中?
答案 0 :(得分:1)
您只需要使用strcpy
,它将复制一个\0
终止的C样式字符串:
char inputBuffStr[32];
strcpy(inputBuffStr,binString);
顺便说一句:您的问题与C ++无关,所以我将标记更改为C。