C++编程 将字符串转换为二进制码输出
发布网友
发布时间:2022-04-22 12:42
我来回答
共5个回答
热心网友
时间:2022-06-01 17:51
可以定义一个函数,实现把一个字符转换为二进制码输出。
在函数中,先将1左移7位,就可以得到二进制值10000000,再将此值与一个字符“按位与”,然后判断其值是否为0。不为0就输出1,否则就输出0。类似的操作做8次,就可以输出一个字节的8位二进制码了。
#include<stdio.h>
void prt(char c)
{int i;
for(i=7;i>=0;i--)
printf("%d",(c & 1<<i)!=0);
printf(" ");
}
int main()
{char s[100];
int i;
gets(s);
for(i=0;s[i];i++)
prt(s[i]);
printf("\n");
return 0;
}
热心网友
时间:2022-06-01 17:52
我对C++某些细节规定不是太熟悉,不能全面检查您的程序,只指出两点:
一、
您的str2定义的是char型,不是整数型,故cout << str2 << endl;输出时,没有把它当成0或1,而是把它当成了ASCII码为0或1的字符,即'\0'和'\1'。
而这两个字符都属于“控制符”,显示不出来的。
纠正方法:将str2定义换成int型。
如不想改str2定义的类型,也可以另法:将str2 = str2 & 1;改成str2 = (str2 & 1)+'0';
二、
您的输出是竖排的,且低位在前高位在后。似乎不合要求吧?如需高位在前可将
str[i] >> i;
改为str[i] >> (7- i);
如需横排,则去掉endl即可。
热心网友
时间:2022-06-01 17:52
LZ能否给出样板数据,就是那个("Input.txt")数据格式是什么,我默认是这样的:
64542137
1212
#include<iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream fin("Input.txt");//文件流
while(fin)//当文件流有数据可以读取
{
string str;//字符串对象
fin>>str;//读入一行数据
for(int i=0;i<str.length();i++)//每个字符分别处理
{
char ch=str.at(i);//获取第i个字符
ch=ch-'0';//注意字符串中'0'的ASCII码是42,而整数的是0
for(int j=0;j<8;j++)
{
cout<<((ch&1)?("1"):("0"));
ch=ch>>1;//右移一位
} //for(j)
cout<<endl;//为每个字符输出换行,便于查看
}//for(i)
cout<<endl;//在换行,
}//while(fin)
cin.get();
return 0;
}//main
注意给出数据中左边是低位右边是高位,我没把他们反转,可以这样,但是我再加进去你可能吃不消,所以暂时不加进去
热心网友
时间:2022-06-01 17:53
修改如下:
int main(){
long fan;
ifstream file1("Input.txt");
//string str;
char str[200];
unsigned char str2;
int i,j,L;
file1.getline(str,200);
L = strlen(str);
// cout<<str << endl;
for (j=0;j<L;j++){
for(i=7; i>=0; i--){
str2 = (str[j] >> i) & 0x01;
cout << (int) str2 ;
}
cout << endl;
}
file1.close();
getchar();
getchar();
return 0;
}
热心网友
时间:2022-06-01 17:53
????? for(int i=0; i<8; i++){
????? str2 = str[i] >> i;
????? str2 = str2 & 1;
????? cout << str2 << endl;
==>
for(int i=0; i<str.length(); i++){
str2 = str[i];
for(int j=7; j>=0; j++) cout << (str2>>i)&1;
cout << endl;
C语言如何将字符串转换到对应的01二进制的字符串,比如AB字符就变为...
如下子程序就可以将一个字符的ASCII码按二进制形式输出:void binarystring(char c){ int i;for(i=0;i<8;i++){ if (c & 0x80) putchar('1'); else putchar('0');c <<= 1;} } 如上定义后,只要调用 binarystring('A');binarystring('B');putchar('\n');即可输出 01000001010...
C++编程 将字符串转换为二进制码输出
在函数中,先将1左移7位,就可以得到二进制值10000000,再将此值与一个字符“按位与”,然后判断其值是否为0。不为0就输出1,否则就输出0。类似的操作做8次,就可以输出一个字节的8位二进制码了。include<stdio.h> void prt(char c){int i;for(i=7;i>=0;i--)printf("%d",(c & 1<...
C语言中格式输出二进制的两种方法
在我们日常的编程中,有时候需要格式化输出一个整形数据的二进制,但是在我们C语言中只有输出十进制:%d;输出十六进制:%x;输出单个字符:%c;输出字符串:%s;输出变量所在的地址:%p;而并没有这种二进制对应的格式,所以需要我们手动来实现。本篇博客给大家介绍两种方法: 1.通过库函数itoa,需要包含...
在C#中怎么把字符串转换成二进制数?
ASCIIbyte[]转成string:(byte[] = new byte[]{ 0x30, 0x31} 转成"01")string str = System.Text.Encoding.ASCII.GetString ( byteArray );byte[]转16进制格式string:new byte[]{ 0x30, 0x31}转成"3031":publicstaticstring ToHexString ( byte[] bytes ) // 0xae00cf => "AE00...
在C语言中如何将汉字或者字符串转换成二进制代码或者ASCII代码?_百度知 ...
我记得好像汉字是用点阵存储的,就是把字形用点阵表示出来,具体细节不是很清楚,字符串可以用数组存储,拆分成一个一个的字符,一个字符对应一个ASCII码
C#里面怎样把普通字符串转换成二进制并且返回字符串
/// 输入一个十进制 返回一个二进制 /// /// /// <returns>装换成的二进制数</returns> public static string DtoB(int d){ string b = "";//判断该数如果小于2,则直接输出 if (d < 2){ b = d.ToString();} else { int c;int s = 0;int n = d;while (n >= 2)...
c语言 01字符串转换为二进制形式,例如字符串“1010101”转化为二...
include<stdio.h> include "string.h"void main (){ char buf[10];int n=0;strcpy(buf, "1010101");for(int i=strlen(buf); i>-1; i--){ if(buf[i] =='1')n = 2 * n + 1;else n = 2* n;} printf("%x", n);} ...
C语言中将每个字母换成相应的8位二进制ASCII码
include"stdio.h"main(){ char s[80];unsigned char t;int i=0;printf("输入一个字符串:");gets(s);for(i=0;s[i];i++){ t=(s[i]<<4)+(s[i]&0xF0>>4);//把后4位放前,前4位向后.printf("%x",t);} }
C#中如何把二进制字符串转化为二进制
打开计算器并选择程序员模式,在十进制形式下输入任意数字,然后切换成二进制,按CTRL+C,复制(使用计算器验证)。运行项目,在文本框内粘贴二进制字符串,然后点击按钮,弹出窗口显示的数字和计数器的十进制数是一致的。见代码及附图。然后逐行分析代码,理解之。有问题再问。string txt = textBox1....
如何用C语言输出二进制数据
原型: char * itoa(intvalue,char * stringprintf输出格式 二进制,intradix);参数: int值转换后的整数,char *转换后存储的字符串数组,int基数转换的十六进制数,例如2、8、10、16十六进制等.功能: 将任何类型的数字转换为字符串.中与之相反的函数是atoi.参考代码:1 include<stdlib.h> include...