十六进制与字符串之间互转
来源:互联网 发布:if you音译歌词知乎 编辑:程序博客网 时间:2024/05/14 04:21
下面是函数:
// 字节数据转换为可打印字符串
// 如:{0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01} --> "C8329BFD0E01"
// 输入: pSrc - 源数据指针
// nSrcLength - 源数据长度
// 输出: pDst - 目标字符串指针
// 返回: 目标字符串长度
int bytes2HexStr(unsigned char* pSrc, unsigned char* pDst, int nSrcLength)
{
const char tab[]="0123456789ABCDEF"; // 0x0-0xf的字符查找表
for (int i = 0; i < nSrcLength; i++){
*pDst++ = tab[*pSrc >> 4]; // 输出高4位
*pDst++ = tab[*pSrc & 0x0f]; // 输出低4位
pSrc++;
}
// 输出字符串加个结束符
*pDst = '\0';
// 返回目标字符串长度
return (nSrcLength * 2);
}
// 可打印字符串转换为字节数据
// 如:"C8329BFD0E01" --> {0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01}
// 输入: pSrc - 源字符串指针
// nSrcLength - 源字符串长度
// 输出: pDst - 目标数据指针
// 返回: 目标数据长度
int hexStr2Bytes(unsigned char* pSrc,unsigned char* pDst, int nSrcLength)
{
for (int i = 0; i < nSrcLength; i += 2)
{
// 输出高4位
if ((*pSrc >= '0') && (*pSrc <= '9')){
*pDst = (*pSrc - '0') << 4;
}
else{
*pDst = (*pSrc - 'A' + 10) << 4;
}
pSrc++;
// 输出低4位
if ((*pSrc>='0') && (*pSrc<='9')){
*pDst |= *pSrc - '0';
}
else{
*pDst |= *pSrc - 'A' + 10;
}
pSrc++;
pDst++;
}
// 返回目标数据长度
return (nSrcLength / 2);
}
使用:
unsigned char src[255] = {0x1A,0x0,0x22,0x89,0xff,0xee,0xbc};
unsigned char dst[255] = {0};
int szLength = 0;
int byLength = 0;
//to hexstr
byLength = bytes2HexStr(src,dst,7);
printf("dst: %s\n", dst);
//hexstr 2 str
szLength = hexStr2Bytes(dst,src,strlen((const char *)dst));
for(int i=0; i<szLength; i++){
printf("x, ",src[i]);
}
0 0
- 十六进制与字符串之间互转
- 十六进制与字符串之间转换
- 十六进制与字符串互转
- Java学习篇之---byte与十六进制字符串之间互转
- 十六进制字符串与数值类型之间转换
- 字符串与十六进制之间的互相转化
- 字符串与十六进制之间的转换
- 十六进制字符串与数值类型之间转换
- 十六进制字符串与数值类型之间转换
- byte数组与十六进制字符串互转
- 字符串与十六进制的互转
- float与十六进制字符串互转
- java 十六进制字符串与字符串之间的转换
- 字符串与十六进制与byte和十进制之间的转化
- 字符串与十六进制与byte和十进制之间的转化
- 十六进制、字符串互转
- 十六进制Unicode编码字符串与中文字符串互转
- 字符串转十六进制与十六进制转字符串示例
- 关于C++类成员函数的重载、覆盖、隐藏与virtual关键字
- 蓝鸥Unity开发教程之课时14 刚体
- 安装psycopg2出错:Error:pg_config executable not found的解决
- Stereo Matching文献笔记之(三):经典算法Semi-Global Matching(SGM)之碉堡的动态规划
- 一些小问题
- 十六进制与字符串之间互转
- 基于NanoPi2的Linux3.4内核GPIO驱动
- centos设置apache
- 从3000元月薪码农到首席架构师的经历
- RHEL6.5(POSTFIX+DOVECOT) 简单版
- 玩转树莓派-3_远程桌面连接
- 当Genymotion遇到AndroidStudio
- 手把手教你做智能LED灯(四) LED灯的外形结构
- html 复选框一键反选