C语言十六进制数据同字符串的相互转换
来源:互联网 发布:nginx 默认时间格式 编辑:程序博客网 时间:2024/06/05 04:53
- // t4.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <string>
- #include <iostream>
- #include <cctype>
- #include <algorithm>
- /*
- 入口参数:pSrc 源十六进制数据
- 出口参数:dest 存放运算结果
- 返回:true 转换成功
- false 失败
- */
- bool Hex2String(unsigned char *pSrc,std::string &dest,int nL)
- {
- char buf[256];
- memset((char *)buf,0,sizeof(buf));
- unsigned char hb;
- unsigned char lb;
- for(int i=0;i<nL;i++)
- {
- hb=(pSrc[i]&0xf0)>>4;
- if( hb>=0 && hb<=9 )
- hb += 0x30;
- else if( hb>=10 &&hb <=15 )
- hb = hb -10 + 'A';
- else
- return false;
- lb = pSrc[i]&0x0f;
- if( lb>=0 && lb<=9 )
- lb += 0x30;
- else if( lb>=10 && lb<=15 )
- lb = lb - 10 + 'A';
- else
- return false;
- buf[i*2] = hb;
- buf[i*2+1] = lb;
- }
- dest = buf;
- return true;
- }
- /*
- 入口参数:src 源字符串
- 出口参数:dest 存放运算结果
- 返回:true 转换成功
- false 失败
- */
- bool String2Hex(std::string &src,unsigned char *dest)
- {
- unsigned char hb;
- unsigned char lb;
- if(src.size()%2!=0)
- return false;
- transform(src.begin(), src.end(), src.begin(), toupper);
- for(int i=0, j=0;i<src.size();i++)
- {
- hb=src[i];
- if( hb>='A' && hb<='F' )
- hb = hb - 'A' + 10;
- else if( hb>='0' && hb<='9' )
- hb = hb - '0';
- else
- return false;
- i++;
- lb=src[i];
- if( lb>='A' && lb<='F' )
- lb = lb - 'A' + 10;
- else if( lb>='0' && lb<='9' )
- lb = lb - '0';
- else
- return false;
- dest[j++]=(hb<<4)|(lb);
- }
- return true;
- }
- //下面是使用举例,在VisualStudio2008+SP1中调试通过
- int _tmain(int argc, _TCHAR* argv[])
- {
- unsigned char srcB[]={0x12,0x34,0x56,0x78,0x90,0xab,0xbc,0xcd,0xde,0xef};
- std::string strDest;
- Hex2String(srcB,strDest,sizeof(srcB));
- std::cout<<"HexToString:"<<strDest<<std::endl;
- if(String2Hex(strDest,srcB))
- std::cout<<"StringToHex:Success!"<<std::endl;
- else
- std::cout<<"StringToHex:Failed!"<<std::endl;
- return 0;
- }
0 0
- C语言十六进制数据同字符串的相互转换
- C语言十六进制数据同字符串的相互转换
- C语言十六进制数据同字符串的相互转换
- C语言十六进制数据同字符串的相互转换
- 十六进制数据与字符串的相互转换
- 字节数据与十六进制的相互转换,字符串与十六进制的相互转换
- C语言实现字节流与十六进制字符串的相互转换
- C语言实现字节流与十六进制字符串的相互转换
- C语言实现字节流与十六进制字符串的相互转换
- C语言实现字节流与十六进制字符串的相互转换
- C语言实现字节流与十六进制字符串的相互转换
- C语言实现字节流与十六进制字符串的相互转换
- C语言实现字节流与十六进制字符串的相互转换
- C语言实现字节流与十六进制字符串的相互转换
- C语言实现字节流与十六进制字符串的相互转换
- C语言实现字节流与十六进制字符串的相互转换
- 十六进制与字符串的相互转换
- iOS十六进制和字符串的相互转换
- 学习JAVA开始的感悟
- 设计模式C++实现(13)——中介者模式
- 银行排号调度系统
- Ubuntu安装qt全过程,qt-Create是一个高集成开发环境
- 关于支付宝sdk和百度云推送sdk引入的base64.o编译报错问题
- C语言十六进制数据同字符串的相互转换
- 关于java 回调函数的理解
- Import UTF-8 file to SQL Server
- ACM-3177
- strcat,strncat,strcpy,strncpy,snprintf,vsnprintf
- 设计模式C++实现(14)——职责链模式
- HDU 4576 Robot(概率题)
- css权重 vs 浏览器渲染 -- css之弊病
- zend studio 10.6 汉化问题