这证明我在编码方面是一个菜鸟!我到处寻找,仍然无法做到这一点。这应该很简单。
我一直在尝试这个:
int i;
for(i=0;i<16;i++)
{
QChar q = QChar(memblock[i]);
QString s = QString(q);
QTableWidgetItem *item = new QTableWidgetItem(s);
ui->tableWidget->setItem(rowCount, colCount, item);
}
所以我从每个字符串制作表项。那是因为我也无法弄清楚如何从QChar或普通字符中制作表项。
但是每个单元都以:
结束Ý
当我加入时:
cout << memblock[i];
它正确显示:
RIFFd2 WAVEfmt
以下是读取原始数据的代码:
ifstream file (text, ios::in|ios::binary|ios::ate);
if (file.is_open())
{
size = file.tellg();
memblock = new char [size];
file.seekg(0, ios::beg);
file.read(memblock, size);
file.close();
}
另外,当我做cout << &memblock[i]
时,对于我从0到4,我得到:
RIFFd2
IFFd2
FFd2
Fd2
等等。
答案 0 :(得分:3)
我设法在Qt 4.8.3和MSVC 2010中使用了一些简化的代码变体:
ui.tableWidget->setColumnCount(5);
ui.tableWidget->setRowCount(5);
char *memChunck = new char[25];
for ( int i = 0; i < 25; ++i ) {
memChunck[i] = i + 65;
}
for ( int i = 0; i < 25; ++i ) {
QTableWidgetItem *item = new QTableWidgetItem(QString::number( memChunck[i], 16).toUpper() );
ui.tableWidget->setItem(i / 5, i % 5, item);
}