Как вывести символы форматирования ASCII и представить их в HEX?
Есть .dat файл в котором прописаны показания датчика в символах ASCII. Я их с помощью нижеприведенного кода перевожу в HEX (построчно считываю файл и посимвольно перевожу в int). Но значения, 9, 0А, 0В, 0С, 0D не выводятся в консоль. Я так понимаю, они считываются как символы форматирования. Как их вывести?
Вывод (должно быть): Строка 1 - FFFF FFFF A0 A0 A0 A0 A0 1 2 3 4 5 6 7 8 9 A0 0B 0C 0D 0E 0F.... и тд.
Вывод (что есть) Строка 1 - FFFF FFFF Строка 2 - 1 2 3 4 5 6 7 8 Строка 3 - 0E 0F.... и тд.
string ASCIItoHEX(const string& a) { //Функция перевода символов потока из ASCII в HEX
ostringstream StreamFileDATA; //Поток входных данных из .dat файла
StreamFileDATA.setf(ios_base::hex, ios_base::basefield);
StreamFileDATA.width(1);
StreamFileDATA.fill(' ');
const size_t LengthOfString = a.length();
const char* CharToString = a.c_str();
for (int i = 0; i < LengthOfString; i++) {
StreamFileDATA << hex << (unsigned short)CharToString[i];
}
return StreamFileDATA.str();
}
int main() {
setlocale(LC_ALL,"Russian");
string path = "C:\\Users\\Лина\\Desktop\\Файл\\test.dat"; //Путь к файлу
ifstream DataFile(path, ios::binary);
map <int, string> Data;
int CountKeys = 0;
string line;
if (!DataFile.is_open()) { //Проверка файла
cout << "Невозможно открыть файл";
}
while (!DataFile.eof()) { //Запись построчно строчек файла в map
DataFile >> line;
Data[CountKeys] = ASCIItoHEX(line);
++CountKeys;
cout << CountKeys << " - " << ASCIItoHEX(line) << endl;
if (CountKeys == 100) {
CountKeys = 0;
break;
}
}
return 0;
}
Ответы (1 шт):
0x0D = \r 0x0A = \n - символы "откат каретки" и "перевод строки" (в винде обычно перевод строки парой \r\n в пингвинах одним - \n)
0x09 - символ табуляции
Что вы выводить в консоль то хотите? я подозреваю что они выводятся но смотреть там не на что.