将网络字节流转换为十六进制显示

来源:互联网 发布:网络诈骗罪怎么报警 编辑:程序博客网 时间:2024/05/11 20:00
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_;};

0 0