如何解决如何在 C++ 中从文件读取字节到十六进制字符串?
我正在尝试将包含字节的文件读入十六进制字符串。
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);
然而 hex_data
看起来不像一个十六进制字符串。有没有办法在读取过程中将字节转换为十六进制字符串?
解决方法
您正在读取原始字节并将它们按原样存储在您的 std::string
中。如果您希望 std::string
为十六进制格式,则需要自己处理该格式,例如:
#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();
...
}
,
使用 std::stringstream 对象
std::stringstream stream;
stream << std::hex << static_cast<int>( your_char);
std::string result( stream.str() );
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。