#include <iostream>
#include <string>
#include <stdint.h> using namespace std; string BinToHex(const string &strBin, bool bIsUpper = false)
{
string strHex;
strHex.resize(strBin.size() * );
for (size_t i = ; i < strBin.size(); i++)
{
uint8_t cTemp = strBin[i];
for (size_t j = ; j < ; j++)
{
uint8_t cCur = (cTemp & 0x0f);
if (cCur < )
{
cCur += '';
}
else
{
cCur += ((bIsUpper ? 'A' : 'a') - );
}
strHex[ * i + - j] = cCur;
cTemp >>= ;
}
} return strHex;
} string HexToBin(const string &strHex)
{
if (strHex.size() % != )
{
return "";
} string strBin;
strBin.resize(strHex.size() / );
for (size_t i = ; i < strBin.size(); i++)
{
uint8_t cTemp = ;
for (size_t j = ; j < ; j++)
{
char cCur = strHex[ * i + j];
if (cCur >= '' && cCur <= '')
{
cTemp = (cTemp << ) + (cCur - '');
}
else if (cCur >= 'a' && cCur <= 'f')
{
cTemp = (cTemp << ) + (cCur - 'a' + );
}
else if (cCur >= 'A' && cCur <= 'F')
{
cTemp = (cTemp << ) + (cCur - 'A' + );
}
else
{
return "";
}
}
strBin[i] = cTemp;
} return strBin;
} int main()
{
string strBin = "!@#$%^&*()_+~`1234567890-=";
string strHex = "21402324255E262A28295F2B7E60313233343536373839302D3D"; string strBinToHex = BinToHex(strBin);
cout << strBinToHex << endl;
strBinToHex = BinToHex(strBin, true);
cout << strBinToHex << endl; string strHexToBin = HexToBin(strHex);
cout << strHexToBin << endl; return ;
}

二进制值和十六进制字符串相互转换的C++代码的更多相关文章

  1. 字节、十六进制字符串相互转换(asc2hex、hex2asc)

    //================================================================== /** 功能: 将16进制数组转换成asc字符数组(短转长) ...

  2. java byte[]与十六进制字符串相互转换

    http://blog.csdn.net/worm0527/article/details/69939307 http://blog.csdn.net/androiddeveloper_lee/art ...

  3. 数值和字符串相互转换(C++ 数据类型转换技巧)

    类型转换是将一种类型的值映射为另一种类型的值.进行数据类型的转换. 是在实际代码编写中经常遇到的问题,特别是字符串和其他类型的转换. 1.将字符串转换为整数 (1).转换函数// 双精度函数doubl ...

  4. "二进制" 转化为 "十六进制

    //"二进制" 转化为 "十六进制" void To_string(uint8 *dest,char * src,uint8 length) { uint8 * ...

  5. Java中将0x开头的十六进制字符串转换成十进制整数

    1.Integer.toString(int i) 由于input(输入数据)是以0x开头的字符串,并不是整型.因而在用 String s = Integer.toString(input); 时用会 ...

  6. c程序十六进制字符串转换为整数与反转

    字符串转整数使用sscanf ; char *buf = "1d5ce"; sscanf (buf, "%x", &value); printf (&q ...

  7. Java中二进制字节与十六进制互转

    在Java中字节与十六进制的相互转换主要思想有两点: 1.二进制字节转十六进制时,将字节高位与0xF0做"&"操作,然后再左移4位,得到字节高位的十六进制A;将字节低位与0 ...

  8. Map 集合 和 String 字符串相互转换工具类

    package com.skynet.rimp.common.utils.util; import java.util.Arrays; import java.util.HashMap; import ...

  9. HEX格式数据转换成十六进制字符串

    /** * Hex格式数据转换成十六进制字符串 * @param src */ public void bytesToHexString(byte[] by){ StringBuilder strin ...

随机推荐

  1. SimpleCursorAdapter和ListView的结合使用

    我们在用SQLite查数据的时候,经常会用到Cursor这个游标,我们希望能将游标指向的数据直接绑定到ListView中,这样就免去了将游标数据取出然后转换到SimpleAdapter中的麻烦.今天我 ...

  2. navicat for mysql安装与破解

    Windows系统的电脑 navicat for mysql 的安装软件以及破解包 方法/步骤     从网上下载需要用到的navicat for mysql 的安装软件以及破解包.   双击navi ...

  3. ubuntu 14.04下搭建esp32开发环境

    esp32是乐鑫出品的一款集成了wifi和蓝牙的集成模块,板上自带两个哈佛结构的Xtensa LX6 CPU双核处理器,本文主要讲解如何在linux下搭建其编译开发环境. 首先ctrl+alt+t打开 ...

  4. Integer Array Ladder questions

    1.这个题不难,关键在于把题目意思理解好了.这个题问的不清楚.要求return new length,很容易晕掉.其实就是return 有多少个单独的数. import java.util.Array ...

  5. MFC中的Debug Assertion Failed 如何查找原因

    编写MFC程序时经常会遇到下图所示的断言失败问题 报错对话框中给出了一个目录,是在F盘,但是查找之后会发现电脑里可能根本没有这个目录. 最后发现可以在VS的安装目录下找到这个文件: \atlmfc\s ...

  6. kaldi的TIMIT实例一

    TIMIT语音库是IT和MIT合作音素级别标注的语音库,用于自动语音识别系统的发展和评估,包括来自美式英语,8个地区方言,630个人. 每个人读10个句子,每个发音都是音素级别.词级别文本标注,16k ...

  7. zabbix docker - 安装和初始化配置

    zabbix docker - 安装和初始化配置 安装zabbix server docker-mysql版本 zabbix server支持不同的数据库(详见zabbix的docker hub),这 ...

  8. HDU1542 扫描线(矩形面积并)

    Atlantis Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  9. InnoDB体系架构(四)Master Thread工作方式

    Master Thread工作方式 在前面的文章:InnoDB体系架构——后台线程 说到:InnoDB存储引擎的主要工作都是在一个单独的后台线程Master Thread中完成.这篇具体介绍该线程的具 ...

  10. MySQL长度、大小写验证问题[开发篇]

    实际情况是这样的,从外部读取数据,然后存入数据库,要求不能重复存入数据. 由于以前的系统里没有加唯一键,所以,就只有手动判断相同记录是否存在了. case1.由于其中某个值存在为空情况,而存入时该值变 ...