数字串与对应的asc码值二进制串的相互转换函数
也就是"0123" 与 "00110000 00110001 00110002 00110003 " 相互转换
------------------------------------------------------------>8---
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void encode(const char *src, char *dest)
{
char ch;
int i,x;
while(ch=(*src++))
{
for (i=0; i<8; i++)
{
x = (ch >> (7-i)) & 1;
*dest++ = x + '0';
}
}
*dest = '\0';
}
void decode(const char *src, char *dest)
{
char ch;
int index,i,x;
int bytes;
if(strlen(src)%8!=0)
exit(1);
bytes = strlen(src) / 8;
for(index = 0; index < bytes; index++)
{
for(x = 0, i=0; i <8; i++)
{
ch = src[index*8+i];
x |= (ch & 1) << (7-i);
}
*dest++ = x;
}
*dest = '\0';
}
int main(void)
{
char s[]="0011000000110010001100010011000000110000";
char s2[100];
decode(s,s2);
printf("%s > %s\n", s, s2);
encode(s2,s);
printf("%s > %s\n", s2, s);
return 0;
}
------------------------------------------------------------>8---
运行结果:
0011000000110010001100010011000000110000 > 02100
02100 > 0011000000110010001100010011000000110000

浙公网安备 33010602011771号