Чтение двоичных данных методом fstream
Мне нужно прочитать двоичные данные в буфер, но в fstreams я прочитал функцию чтения данных в буфер символов, поэтому мой вопрос:
Как перенести / привести двоичные данные в беззнаковый буфер символов и является ли это лучшим решением в этом случае?
пример
char data[54];
unsigned char uData[54];
fstream file(someFilename,ios::in | ios::binary);
file.read(data,54);
// There to transport **char** data into **unsigned char** data (?)
// How to?
3 ответа
Просто прочитайте это в неподписанных данных char в первую очередь
unsigned char uData[54];
fstream file(someFilename,ios::in | ios::binary);
file.read((char*)uData, 54);
Актерский состав необходим, но безвреден.
Вам не нужно объявлять дополнительный массив uData. Массив данных можно просто преобразовать в unsigned:
unsigned char* uData = reinterpret_cast<unsigned char*>(data);
При доступе к uData вы указываете компилятору интерпретировать данные по-разному, например data[3] == -1, значит uData[3] == 255
Вы могли бы просто использовать
std::copy(data, data + n, uData);
где n
результат, возвращаемый из file.read(data, 54)
, Я думаю, специально для char*
а также unsigned char*
Вы также можете использовать
std::streamsize n = file.read(reinterpret_cast<char*>(uData));