PcapPlusPlus GeneralUtils.h 通用工具解析 16进制字符串转换

GeneralUtils 通用工具

头文件中提供了两个开放接口,实现byte数组与16进制字符串相互的转换。
在这里插入图片描述

byte数组转16进制字符串实现

在这里插入图片描述
主要使用了 std::stringstream 这个内置类,继承关系如下
在这里插入图片描述
std::hex 表示后续使用16进制输出。std::hex实际上是一个函数,类似的有std::oct、std::dec
在这里插入图片描述

dataStream << std::setw(2) << std::setfill(‘0’) << (int)byteArr[i];

设置宽度为2,填充字符为0。后续输入的int类型都会按之前的格式在stringstream中进行存储为string形式。
需要注意的是
在这里插入图片描述
也就是说setw这个函数设置后如果进行输入,就会被重置,所以需要在for循环过程中每次都要设置setw函数。

string 转 byte数组

在这里插入图片描述
在.cpp文件中函数使用static关键字表示该函数是文本作用域,即只有当前文本内可以使用该函数。该函数的目的就是将16进制的字符[0-9][aA-fF]转化为相应的int值。example:a会获得10,b会获得11,c会获得12。
在这里插入图片描述
for (size_t i = 0; i < hexString.length(); i += 2)
循环中每次增加2位,因为16进制字符串中2位数字的最大值为255,一个byte能够表示的最大值也是255。
计算如下:
16进制 ff = 分别获得 15 和 15
15 * 16 + 15 = 255
1个 byte 最大值 = 255

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值