Zbadałem właśnie temat. I faktycznie, niezbędne narzędzie. Generalnie osiągnąłem zamierzony efekt. Czyli, jedna liczba w pojedynczym znaku. Mam jednak pytanie odnośnie tego kodowania. Poczytałem nieco o UTF-8 i wynika z niego, że pojedynczy znak można zakodować nawet w 4 bajtach daje to sporą ilość. Spróbowałem do pliku zapisać coś takiego , w taki sposób ;
int tabl[8] = {7, 0, 48, 18, 415 ,438, 563, 327467};
QString tablica;
for(int i = 0 ; i <8 ; i++)
{
tablica.append(QChar(tabl[i]));
}
QFile file("plik.txt");
file.open(QIODevice::WriteOnly | QIODevice::Truncate);
QTextStream stream(&file);
stream.setCodec("UTF-8");
stream << tablica;
Podgląd pliku:
0 ź¶3+˙
Odczyt pliku:
QFile file("plik.txt");
file.open(QIODevice::ReadOnly);
QTextStream stream(&file);
QString array;
stream.setCodec("UTF-8");
stream >> array;
QVector<int> vin;
for(int i = 0 ; i < array.size() ; i++)
{
qd "zmienne" << array.data()[i].unicode() << array.data()[i];
vin.append(array.data()[i].unicode());
qd "vin" << vin.data()[i];
}
Wynik dbg
zmienne 7 ''
vin 7
zmienne 0 'vin 0
zmienne 48 '0'
vin 48
zmienne 18 ''
vin 18
zmienne 415 '?'
vin 415
zmienne 438 '?'
vin 438
zmienne 563 '?'
vin 563
zmienne 65323 '?'
vin 65323
Widać wyraźnie wszystko jest zgodnie z zamiarem, ale liczba 327467 się nie 'mieści'. Czy trzeba ustawić coś w samym QString lub QChar ?