C语言实现字符串转二进制编码
一、代码实现(不涉及保存)终端打印
#include <stdio.h>
#include <string.h>
//字符串转二进制编码
int str_to_bin(char *str)
{
char len = strlen(str);
printf("len:%d\n",len);
char tmp;
for(int i=0;i<len;i++){
tmp = str[i];
for(int j=0;j<8;j++){
if(tmp & 0x80) { //1000,0000
printf("1");
}
else{
printf("0");
}
tmp = tmp << 1 ;
}
printf("\n") ;
}
return 0;
}
void str_to_bin_test()
{
char str[] = "Welcome to FPGA";
// char str[100];
// printf("please input:\n");
/* scanf()函数在读取字符串时以空格为分隔,
遇到空格就认为当前字符串结束了,
所以无法读取含有空格的字符串。*/
//scanf("%s",&str);
/* gets()函数认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,
所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。
换句话说,gets() 用来读取一整行字符串。*/
//gets(str);
str_to_bin(str);
}
int main()
{
str_to_bin_test();
return 0;
}
二、代码实现,转化后二进制的保存成.txt文件
#include <stdio.h>
#include <string.h>
//字符串转二进制编码
int str_to_bin_save(char *str)
{
//打开文件
FILE *fp;
if((fp = fopen("word.txt","w")) == NULL)
{
printf("Open file is failed");
return -1;
}
char len = strlen(str);
printf("len:%d\n",len);
char tmp;
for(int i=0;i<len;i++){
tmp = str[i];
for(int j=0;j<8;j++){
if(tmp & 0x80) { //1000,0000
//printf("1");
fputc('1',fp);
}
else{
//printf("0");
fputc('0',fp);
}
tmp = tmp << 1 ;
}
fprintf(fp,"\n");
//printf("\n") ;
}
fclose(fp);
return 0;
}
void str_to_bin_save_test()
{
char str[] = "Welcome to FPGA";
// char str[100];
// printf("please input:\n");
/* scanf()函数在读取字符串时以空格为分隔,
遇到空格就认为当前字符串结束了,
所以无法读取含有空格的字符串。*/
//scanf("%s",&str);
/* gets()函数认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,
所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。
换句话说,gets() 用来读取一整行字符串。*/
//gets(str);
str_to_bin_save(str);
}
int main()
{
str_to_bin_save_test();
return 0;
}