精华内容
下载资源
问答
  • c++ 十六进制字符串转换二进制字符串, 二进制在转换十进制
    千次阅读
    2018-09-19 17:07:55
    
    #include <stdio.h>;
    #include <string.h>;
    #include <stdlib.h>;
    
    /*
    *        10进制字符转成16进制字符
    */
    int strDec2Hex(char* sDec, int iDecLen, char* sHex, int iHexLen)
    {
    	char sSrc[65];
    	char sForamt[6];
    	unsigned long ulSrc;
    	memset(sSrc, 0, sizeof(sSrc));
    	memcpy(sSrc, sDec, iDecLen);
    	ulSrc = atol(sSrc);
    	sprintf(sForamt, "%%0%dX", iHexLen);
    	_snprintf(sHex, iHexLen, sForamt, ulSrc);
    	return ulSrc;
    }
    /*
    *        2进制字符转成16进制字符
    */
    int strBin2Hex(char* sBin, int iBinLen, char* sHex, int iHexLen)
    {
    	char sSrc[65];
    	char sForamt[6];
    	unsigned long ulSrc;
    	memset(sSrc, 0, sizeof(sSrc));
    	memcpy(sSrc, sBin, iBinLen);
    	*(sSrc + 0) == '1' ? ulSrc = 1 : ulSrc = 0;
    	for (int i = 1; i < iBinLen; i++)
    		*(sSrc + i) == '1' ? ulSrc = ulSrc * 2 + 1 : ulSrc = ulSrc * 2 + 0;
    	sprintf(sForamt, "%%0%dX", iHexLen);
    	_snprintf(sHex, iHexLen, sForamt, ulSrc);
    	return ulSrc;
    }
    
    /*
    *        16进制字符转成10进制字符
    */
    int strHex2Dec(char* sHex, int iHexLen, char* sDec, int iDecLen)
    {
    	char sSrc[65];
    	char sForamt[6];
    	unsigned long ulSrc;
    	memset(sSrc, 0, sizeof(sSrc));
    	memcpy(sSrc, sHex, iHexLen);
    	strupr(sSrc);
    	*(sSrc + 0) < 'A' ? ulSrc = *(sSrc + 0) - 0x30 : ulSrc = *(sSrc + 0) - 0x41 + 0x0A;
    	for (int i = 1; i < iHexLen; i++)
    		*(sSrc + i) < 'A' ? ulSrc = ulSrc * 16 + *(sSrc + i) - 0x30 : ulSrc = ulSrc * 16 + *(sSrc + i) - 0x41 + 0x0A;
    	sprintf(sForamt, "%%0%du", iDecLen);
    	_snprintf(sDec, iDecLen, sForamt, ulSrc);
    	return ulSrc;
    }
    
    /*
    *        16进制字符转成2进制字符
    */
    int strHex2Bin(const char* sHex, int iHexLen, char* sBin, int iBinLen)
    {
    	char sSrc[65];
    	char sForamt[6];
    	unsigned long ulSrc;
    	memset(sSrc, 0, sizeof(sSrc));
    	memcpy(sSrc, sHex, iHexLen);
    	*(sSrc + 0) < 'A' ? ulSrc = *(sSrc + 0) - 0x30 : ulSrc = *(sSrc + 0) - 0x41 + 0x0A;
    	for (int i = 1; i < iHexLen; i++)
    		*(sSrc + i) < 'A' ? ulSrc = ulSrc * 16 + *(sSrc + i) - 0x30 : ulSrc = ulSrc * 16 + *(sSrc + i) - 0x41 + 0x0A;
    	sprintf(sForamt, "%%0%dd", iBinLen);
    	memset(sSrc, 0, sizeof(sSrc));
    	ultoa(ulSrc, sSrc, 2);
    	sprintf(sForamt, "%%0%ds", iBinLen);
    	_snprintf(sBin, iBinLen, sForamt, sSrc);
    	return ulSrc;
    }
    
    //十六进制转换二进制
    
    void main()
    {
    	const char* sHex = "83";
    	int iHexLen = 2;
    	char* sBin = new char[9];
    	memset(sBin, 0, 9);
    	int iBinLen = 9;
    	int iR = strHex2Bin(sHex, 2, sBin, 8);
    	cout << iR << endl;
    	cout << sBin << endl;
    	string strBin(sBin);
    	string strsBin = strBin.substr(1, 7);
    
    	int ii = strtol(strsBin.c_str(), NULL, 2);
    
    	printf("ii=%d\n", ii);
    
    	system("pause");
    }
    string strBin(sBin);
    	string strsBin = strBin.substr(1, 7);
    
    	int ii = strtol(strsBin.c_str(), NULL, 2);
    
    	printf("ii=%d\n", ii);
    
    //二进制转换十进制

     

    更多相关内容
  • visual c++ 2进制字符串转10进制数
  • 将任意基本类型转换为二进制字符串C++代码...
  • 二进制字符串转为对应十六进制值 参数: str_in_c:输入字符串,完全由“0”,“1”组成 p_buf_out:输出内存 返回值: p_buf_out中的有效字节数 要求: 输出内存长度充足 例: 输入 转换后的值 ...

    将二进制字符串转为对应十六进制值

    参数:
    str_in_c:输入字符串,完全由“0”,“1”组成
    p_buf_out:输出内存
    返回值:
    p_buf_out中的有效字节数
    要求:
    输出内存长度充足

    例:
    输入 转换后的值 返回值
    “” [] 0
    “01” [0x01] 1
    “1001” [0x09] 1
    “110010010” [0x01,0x92] 2

    size_t bin_str_to_hex(const string &str_in_c,uint8_t *p_buf_out)
    {
    	size_t n_bit_count = str_in_c.size();
    	size_t n_byte_count = n_bit_count / 8 + (n_bit_count % 8 ? 1: 0);
    	size_t n_pos = 0;
    	memset(p_buf_out,0,n_byte_count);
    	while(n_pos < n_bit_count && n_byte_count)
    	{
    		*p_buf_out ^= (str_in_c[n_pos++] - 48);
    		if((n_bit_count - n_pos) % 8 == 0)
    		{
    			p_buf_out++;
    			continue;
    		}
    		*p_buf_out = *p_buf_out << 1;
    	}
    	return n_byte_count;
    };
    
    vector<uint8_t> bin_str_to_hex(const string &str_in_c)
    {
    	vector<uint8_t> vec(str_in_c.size() / 8 + (str_in_c.size() % 8 ? 1 : 0));
    	return vec;
    };
    
    展开全文
  • ===============================... 二进制转十六进制 ============================================== //__二进制转十六进制 std::string BinToHex(const std::string &strBin, bool bIsUpper/* = fals...

    ==============================================

        二进制转十六进制

    ==============================================

    //__二进制转十六进制
    std::string BinToHex(const std::string &strBin, bool bIsUpper/* = false*/)
    {
     std::string strHex;
     strHex.resize(strBin.size() * 2);
     for (size_t i = 0; i < strBin.size(); i++)
     {
         uint8_t cTemp = strBin[i];
         for (size_t j = 0; j < 2; j++)
         {
             uint8_t cCur = (cTemp & 0x0f);
             if (cCur < 10)
             {
                 cCur += '0';
             }
             else
             {
                 cCur += ((bIsUpper ? 'A' : 'a') - 10);
             }
             strHex[2 * i + 1 - j] = cCur;
             cTemp >>= 4;
         }
     }
    
     return strHex;
    }

    ==============================================

        十六进制转二进制

    ==============================================

    //十六进制转二进制
    std::string HexToBin(const std::string &strHex)
    {
        if (strHex.size() % 2 != 0)
        {
            return "";
        }
     
        std::string strBin;
        strBin.resize(strHex.size() / 2);
        for (size_t i = 0; i < strBin.size(); i++)
        {
            uint8_t cTemp = 0;
            for (size_t j = 0; j < 2; j++)
            {
                char cCur = strHex[2 * i + j];
                if (cCur >= '0' && cCur <= '9')
                {
                    cTemp = (cTemp << 4) + (cCur - '0');
                }
                else if (cCur >= 'a' && cCur <= 'f')
                {
                    cTemp = (cTemp << 4) + (cCur - 'a' + 10);
                }
                else if (cCur >= 'A' && cCur <= 'F')
                {
                    cTemp = (cTemp << 4) + (cCur - 'A' + 10);
                }
                else
                {
                    return "";
                }
            }
            strBin[i] = cTemp;
        }
     
        return strBin;
    }

     附1:C++二进制字符串转Base64字符串 Base64字符串转二进制字符串

    转载于:https://www.cnblogs.com/azbane/p/10179742.html

    展开全文
  • 本文实例讲述了C++实现十六进制字符串转换为十进制整数的方法。分享给大家供大家参考。具体实现方法如下: /* * 将十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值 */ #include #include...
  • C++ 将十六进制字符串转换为二进制字符串前言一. 源代码 前言 一种简单的方法将十六进制字符串转为二进制字符串,不限制十六进制的字节数。 一. 源代码 传入的十六进制字符串需要转换为大写!(%X, toupper())。 ...

    C++ 将十六进制字符串转换为二进制字符串


    前言

    一种简单的方法将十六进制字符串转为二进制字符串,不限制十六进制的字节数。


    一. 源代码

    传入的十六进制字符串需要转换为大写!(%X, toupper())。

    string GetBinaryStringFromHexString (string strHex)
    {
        string sReturn = "";
        unsigned int len = strHex.length();
        for (unsigned int i = 0; i<len; i++)
        {
            switch ( strHex[i])
            {
                case '0': sReturn.append ("0000"); break;
                case '1': sReturn.append ("0001"); break;
                case '2': sReturn.append ("0010"); break;
                case '3': sReturn.append ("0011"); break;
                case '4': sReturn.append ("0100"); break;
                case '5': sReturn.append ("0101"); break;
                case '6': sReturn.append ("0110"); break;
                case '7': sReturn.append ("0111"); break;
                case '8': sReturn.append ("1000"); break;
                case '9': sReturn.append ("1001"); break;
                case 'A': sReturn.append ("1010"); break;
                case 'B': sReturn.append ("1011"); break;
                case 'C': sReturn.append ("1100"); break;
                case 'D': sReturn.append ("1101"); break;
                case 'E': sReturn.append ("1110"); break;
                case 'F': sReturn.append ("1111"); break;
            }
        }
        return sReturn;
    }
    
    展开全文
  • //将传入的二进制字符串转换成十进制,并返回十进制数字。 int parseBinary (char const * const binaryString) { //在此处调用判断一个字符串有多长的函数 int size = strlen( binaryString); //将...
  • C++ 十进制数转二进制字符串

    千次阅读 2021-03-21 08:32:10
    #include <iostream> #include <bitset> #include <string> using namespace std; int main() { int n = 5; string str; bitset<7> bits; //7位长度 bits = n; ...
  • //将传入的二进制字符串转换成十进制,并返回十进制数字。 int BinStr2Dec(char const* const binaryString) { //在此处调用判断一个字符串有多长的函数 int size = strlen(binaryString); //将二进制数字...
  • 题目描述 已知一个只包含0和1的二进制数,长度不... C++类库提供了二进制数据类,并且可以用其方法转换成十进制。  代码如下: 代码如下: #include using namespace std; #include int main() {  bitset<16> b
  • C++二进制数字相加用字符串返回的算法实现C++w二进制数字相加用字符串返回的算法实现完整源码(定义,实现,main函数测试) C++w二进制数字相加用字符串返回的算法实现完整源码(定义,实现,main函数测试) #include ...
  • c++ stl二进制转换Given a binary string, we have to convert it ... 给定一个二进制字符串,我们必须使用stoi()函数将其转换为整数。 C ++ STL stoi()函数 (C++ STL stoi() function) stoi() stands for strin...
  • 要将整数转换为仅包含二进制数字的字符串,可以通过使用一位掩码检查整数中的每个位来执行此操作,并将其附加到字符串。像这样的东西:std::string convert_to_binary_string(const unsigned long long int value,...
  • C++将一个数值转化为二进制字符串

    千次阅读 2019-09-18 13:30:53
    问题:如何将一个数值如0xfaceabcd转化成二进制字符串? 第一时间想到的是STL 对了就是bitset对象 详细见http://www.cplusplus.com/reference/bitset/bitset/?kw=bitset #include <iostream&...
  • 十进制正整数与二进制字符串的转换
  • 测试一:只含数字的十六进制字符串 string str("123"); int a = stoi(str,0,16); int b = strtol(str.c_str(),0,16); int c; sscanf(str.c_str(),"%X",&c); cout<<"a = "<<a<<endl; cout<&...
  • 1、十进制和二进制相互转换 (1)十进制转二进制 int a = 10; bitset<10> bit(a); cout << bit << endl; 输出:0000001010 (2)二进制转十进制 第一种方法: bitset<10> bit(...
  • 字符串转byte数组,就是实现如下功能:把一个字符串,比如“E4F1C3A81F”每两位作为一个十六进制数存到一个unsigned char 型的数组(buf)里,buf[0] = 0xE4,buf[1] = 0xF1,buf[2] = 0xC3,buf[3] = 0xA8.........
  • VC源码写的十六进制和二进制的转化,源代码亲测可用。
  • 字符串二进制串相互转换(C++

    千次阅读 2021-01-10 09:52:21
    一、字符转化成二进制 #include <... //字符转化成二进制串 bitset<8> bits = bitset<8>('a'); bitset<1> tmp; //二进制翻转 for(int i=0;i<4;i++) { tmp[0] = bits
  • 引言 在撸代码的过程中,难免会遇到...中定义,是C++的字符串流,当要字符串转数字时,先把字符串输出到字符串流,再把字符串流输入到数字中(int或其他类型)。stringstream能完成十六进制和十进制字符串的转换...
  • 二进制字符串0101010101,转为int。vc。
  • c++二进制转十进制

    2021-09-26 11:48:44
    代码 #include <iostream> #include <cstring> #include <cmath> using namespace std; double power(double x, int n)...//二进制64位 char c[64]; while (cin >> c){ if(c[0] == ...
  • 废话不多说上代码 #include <iostream> #include <vector> #include <string>...void SecToStr(const std::string strSrc, std::string&... std::string strTmp = strSrc.substr
  • import java.util.... * int 转化为 二进制字符串 * 范围为 补码表示为 0x80000000 到 0x7fffffff * 即 (-)2的31次方 到 2的31次方-1 * 十进制表示为 -2147483648 到 2147483647 * @param num * @return */ .
  • 本文介绍二进制、十进制、十六进制及字符串的相互转换方法。 代码 #include <bits/stdc++.h> using namespace std; int main() { int decNum = 255; /* 10进制转2进制 */ bitset<32> a(decNum); ...
  • 二进制和16进制字符串转换

    千次阅读 2020-02-03 22:01:31
    // 申请32字节长度char空间,用来存储32bit的2进制字符串 temp = buffer; for (; i ; i++) { // 从第31bit开始依次获取num的二进制位值是0还是1 temp[i] = num & (1 (31-i)); // 获取第 31-i 位的二进制bit值 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 143,113
精华内容 57,245
关键字:

c++ 二进制字符串

c++ 订阅