Я бы хотел распечатать значение ASCII из 8 последовательных битов памяти.
Возможное значение для любого бита: 0 или 1. Возможно, вам нужен хотя бы байт.
char * bits = (char *) malloc (1);
Выделяет 1 байт в куче. Гораздо более эффективным и беспроблемным было бы создание объекта в стеке, т. Е .:
char bits; // a single character, has CHAR_BIT bits
ifstream cleartext;
cleartext.open (SOMETEXT);
Вышесказанное ничего не пишет в mem. Он пытается открыть файл в режиме ввода.
У него есть символы ascii и обычные eof or \ n, или что-то в этом роде, ввод будет только текстовым файлом, поэтому я думаю, что он должен содержать только символы ASCII, поправьте меня, если я ошибаюсь.
Если в вашем файле есть только ASCII-данные, вам не о чем беспокоиться. Все, что вам нужно сделать, это прочитать содержимое файла и записать его. Компилятор управляет тем, как будут храниться данные (т. Е. Какую кодировку использовать для ваших символов и как представлять их в двоичном виде, порядковый номер системы и т. Д.). Самый простой способ чтения / записи файлов будет:
// include these on as-needed basis
#include <algorithm>
#include <iostream>
#include <iterator>
#include <fstream>
using namespace std;
// ...
/* read from standard input and write to standard output */
copy((istream_iterator<char>(cin)), (istream_iterator<char>()),
(ostream_iterator<char>(cout)));
/*-------------------------------------------------------------*/
/* read from standard input and write to text file */
copy(istream_iterator<char>(cin), istream_iterator<char>(),
ostream_iterator<char>(ofstream("output.txt"), "\n") );
/*-------------------------------------------------------------*/
/* read from text file and write to text file */
copy(istream_iterator<char>(ifstream("input.txt")), istream_iterator<char>(),
ostream_iterator<char>(ofstream("output.txt"), "\n") );
/*-------------------------------------------------------------*/
Последний оставшийся вопрос: хотите ли вы что-то сделать с двоичным представлением? Если нет, забудь об этом. Иначе, обновите ваш вопрос еще раз.
Например: обработка массива символов для его шифрования с использованием блочного шифра
/* a hash calculator */
struct hash_sha1 {
unsigned char operator()(unsigned char x) {
// process
return rc;
}
};
/* store house of characters, could've been a vector as well */
basic_string<unsigned char> line;
/* read from text file and write to a string of unsigned chars */
copy(istream_iterator<unsigned char>(ifstream("input.txt")),
istream_iterator<char>(),
back_inserter(line) );
/* Calculate a SHA-1 hash of the input */
basic_string<unsigned char> hashmsg;
transform(line.begin(), line.end(), back_inserter(hashmsg), hash_sha1());