class HexStream
{
public:
HexStream(const std::string &path)
{
if (0 != fopen_s(&fp_, path.c_str(), "a+")) {
fp_ = NULL;
}
}
~HexStream()
{
fclose(fp_);
}
void write(unsigned char *arr, size_t len)
{
if (fp_) {
std::string hex(len * 3, '\0');
int pos = 0;
for (size_t i=0; i<len; i++) {
pos += sprintf(&hex.front() + pos, "%02X ", arr[i]);
}
time_t curtime = time(0);
tm tim;
localtime_s(&tim, &curtime);
char title[128];
static int s_num = 0;
sprintf(title, "\r\n%d/%02d/%02d %02d:%02d:%02d recv buffer num:%d, len:%d\r\n", tim.tm_year+1900, tim.tm_mon+1,
tim.tm_mday, tim.tm_hour, tim.tm_min, tim.tm_sec, ++s_num, len);
fwrite(title, 1, strlen(title), fp_);
pos = hex.size();
int begin = 0;
int line = 120;
while (begin<pos) {
fwrite(&hex.front() + begin, 1, min(pos-begin, line), fp_);
fwrite("\r\n", 1, 2, fp_);
begin += line;
}
fflush(fp_);
}
}
private:
FILE *fp_;
};
将网络字节流转换为十六进制显示
最新推荐文章于 2024-02-28 15:52:51 发布