Я читаю файл и преобразую его в шестнадцатеричную запись, например, такую: {0x4D,x0FF,0x01}
Я храню его в массиве без знака.Я могу распечатать то, что хотел бы хранить, но не могу сохранить данные в своем массиве.Я прочитал документацию по классу bitset, но не уверен, что это то, что мне нужно.Согласно этому исходному коду, как я могу хранить данные, считанные для получения того же результата, что и:
unsigned char array[3] = {0x4D,x0FF,0x01};
Обратите внимание, что вектор не имеет хороших обозначений, поэтому я использую setfill и setw.
size = file.tellg();
unsigned char* rawData = new unsigned char[size];
memblock = new uint8_t[size];
std::vector<uint8_t> memblock(size);
file.seekg(0, ios::beg);
file.read(reinterpret_cast<char*>(memblock.data()), size);
file.close();
for (int i = 0; i < size; i = i++)
{
if (i == (int)size - 1)
{
cout << "0x" << setfill('0') << setw(2) << std::hex << (unsigned)memblock.at(i);
}
else
{
cout << "0x" << setfill('0') << setw(2) << std::hex << (unsigned)memblock.at(i) << ",";
}
}
Редактировать: Это мой фактический код:
unsigned char* rawData[1] = {0x00}; // My rawData in out of function.
void readFile(std::string p_parametre, unsigned char* rawData[])
{
std::ifstream input{ p_parametre, std::ios::binary };
if (!input.is_open()) { // make sure the file could be opened
std::cout << "Error: Couldn't open\"" << p_parametre << "\" for reading!\n\n";
}
// read the file into a vector
std::vector<unsigned char> data{ std::istream_iterator<unsigned char>{ input },
std::istream_iterator<unsigned char>{} };
std::ostringstream oss; // use a stringstream to format the data
// instead of the glyph
for (int i = 0; i < data.size(); i++)
{
if (i == i- 1)
{
oss <<'0'
<< 'x'
<< std::setfill('0') << std::setw(2) << uppercase << std::hex << static_cast<int>(data.at(i));
}
else
{
oss << '0'
<< 'x'
<< std::setfill('0') << std::setw(2) << uppercase << std::hex << static_cast<int>(data.at(i)) << ',';
}
}
// create a unique_ptr and allocate memory large enough to hold the string:
std::unique_ptr<unsigned char[]> memblock{ new unsigned char[oss.str().length() + 1] };
// copy the content of the stringstream:
int r = strcpy_s(reinterpret_cast<char*>(memblock.get()), oss.str().length() + 1, oss.str().c_str());
OpenFile(memblock.get());
getchar();
}