注册 登录
编程论坛 C++教室

字符串转换问题

习惯被动 发布于 2012-03-09 18:45, 428 次点击
怎么把字符串转换成2进制代码?例如吧A转换成1000100,要求对汉字也可以哦。而且是一大串字符转换。本人使用的是vc++6.0编译器。
9 回复
#2
lz10919149992012-03-09 20:11
程序代码:
#include <string>
#include <iostream>
using namespace std;

int main() {
    string str;
    char ch;
    cin >> str;
    string::iterator iter = str.begin();
    while (iter != str.end()) {
        ch = *iter++;
        for (int i = 0; i < 8; ++i)
            cout << ((ch >> i) & 1);
    }
}
#3
习惯被动2012-03-09 23:39
谢谢,
程序代码:
string::iterator iter = str.begin();
    while (iter != str.end()) {
        ch = *iter++;
        for (int i = 0; i < 8; ++i)
            cout << ((ch >> i) & 1);
    }
这部分能不能给些注释?
#4
lz10919149992012-03-10 10:40
以下是引用习惯被动在2012-3-9 23:39:34的发言:

谢谢, string::iterator iter = str.begin();
    while (iter != str.end()) {
        ch = *iter++;
        for (int i = 0; i < 8; ++i)
            cout << ((ch >> i) & 1);
    }
这部分能不能给些注释?

依次检测这个字符串中的每一个字符,然后吧每个字符的二进制位打印出来。
#5
习惯被动2012-03-10 13:12
回复 4楼 lz1091914999
谢谢,基本知道是怎么回事了。请问那个程序涉及那方面的内容,我想看些书多了解一下。
#6
lz10919149992012-03-10 14:02
字符串加位运算
#7
习惯被动2012-03-10 19:24
回复 6楼 lz1091914999
谢谢。
#8
习惯被动2012-03-17 13:38
回复 6楼 lz1091914999
追问一个:为什么把那些字符串写入到文件会出现乱码的?
程序代码:
#include <string>
#include <iostream>
using namespace std;

int main()

 {
    string str;
    FILE *fp;
    char ch;
    if((fp=fopen("file.txt","wb+"))==NULL)
    {
        cout<<"can not open this file.\n";
        return 0;
    }
    cin >> str;
    string::iterator iter = str.begin();
    while (iter != str.end()) {
        ch = *iter++;
        for (int i = 0; i < 8; ++i)
                fputc(((ch >> i) & 1),fp);
    }
    fclose(fp);
}
要怎么改才能吧那些2进制码写到想要的文件中呢?
#9
lz10919149992012-03-17 15:58
1、fp=fopen("file.txt","w")
2、fputc(((ch >> i) & 1) + '0', fp); 或 fprintf(fp, "%d", ((ch >> i) & 1);
#10
习惯被动2012-03-17 23:43
第一种写入不可以第二种可以谢谢啦。
1