Saya mencoba membaca file yang berisi byte menjadi string hex.

std::ifstream infile("data.txt", std::ios_base::binary);

int length = 10;
char char_arr[length];
for (int i=0; i<length; i++)
{
     infile.get(char_arr[i]);
}
std::string hex_data(char_arr);

Namun hex_data tidak terlihat seperti string hex. Apakah ada cara untuk mengubah byte menjadi string hex selama membaca?

1
Andy 11 Mei 2021, 19:50

2 jawaban

Jawaban Terbaik

Anda membaca dalam byte mentah dan menyimpannya apa adanya ke dalam std::string Anda. Jika Anda ingin std::string diformat hex, Anda harus menangani pemformatan itu sendiri, misalnya:

#include <fstream>
#include <sstream>
#include <iomanip>
#include <string>

std::ifstream infile("data.txt", std::ios_base::binary);

const int length = 10;
unsigned char bytes[length];

if (infile.read(reinterpret_cast<char*>(bytes), length)) {
    size_t numRead = infile.gcount();
    std::ostringstream oss;
    for(size_t i = 0; i < numRead; ++i) {
        oss << std::hex << std::setw(2) << std::setfill('0') << static_cast<unsigned short>(bytes[i]);
    }
    std::string hex_data = oss.str();
    ...
}
3
Remy Lebeau 12 Mei 2021, 17:00

Gunakan std::stringstream objek

std::stringstream stream;
stream << std::hex << static_cast<int>( your_char);
std::string result( stream.str() );
0
Jerome Favrou 11 Mei 2021, 17:03