【发布时间】:2016-04-04 10:31:35
【问题描述】:
我一直在尝试将二进制数转换为char,我使用以下代码将char转换为二进制:
void bin(char x){
int y;
for(y = 0; y < sizeof(char) * 8; y++){
fprintf(f2,"%c", ( x & (1 << y) ) ? '1' : '0' );
}}
而且效果很好。
问题是我不知道如何撤消它,我想获取这个二进制数并将其转换为初始字符。我正在使用以下代码,但它会产生一个核心问题。
char subbuff[9];
memcpy( subbuff, &fichero[0], 8 );
subbuff[8] = '\0';
for(int k=8;k<fichero_len;k+=8){
char c = strtol(subbuff, 0, 2);
printf("%s = %c = %d = 0x%.2X\n", subbuff, c, c, c);
memcpy( subbuff, &fichero[k], k+8 );
subbuff[8] = '\0';
}
例如,如果我转换字符串“hola”,第一个代码显示“00010110111101100011011010000110”
但如果我把它放到第二个代码中:
const char *hola="00010110111101100011011010000110";
char subbuff[16];
memcpy( subbuff, hola[0], 8 );
subbuff[8] = '\0';
for(int k=8;k<strlen(hola);k+=8){
char c = strtol(subbuff, 0, 2);
printf("%s = %c = %d = 0x%.2X\n", subbuff, c, c, c);
memcpy( subbuff, &hola[k], k+8 );
subbuff[8] = '\0';
}
它会产生一个核心问题
【问题讨论】:
-
请出示MCVE。
-
您正在将至少 16 个字节复制到
char subbuff[9]。