C++篇——在linux下将字节转16进制字符串, 16进制字符串转2进制字符串

这篇具有很好参考价值的文章主要介绍了C++篇——在linux下将字节转16进制字符串, 16进制字符串转2进制字符串。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、字节转16进制字符串

std::string bytestohexstring(char* bytes,int bytelength) {
    string str("");
    string str2("0123456789abcdef");
    for (int i = 0; i < bytelength; i++) {
        int b;
        b = 0x0f & (bytes[i] >> 4);
        str.append(1, str2.at(b));   
        b = 0x0f & bytes[i];
        str.append(1, str2.at(b));
    }
    return str;
}

二、16进制字符串转2进制字符串 

方法1: 

string getBinStr(string hexStr) {
    long long val = strtoll(hexStr.c_str(), NULL, 16);
    string binStr = "";
    while (val > 0) {
        int remainder = val % 2;
        binStr.insert(binStr.begin(), '0' + remainder);
        val /= 2;
    }
    //不足长度的补0
    if (binStr.length() < 32) {  //这里的32为你实际要输出的2进制字符串的长度
        string temp = "";
        for (int i = 0; i < 32 - binStr.length(); i++) {
            temp.append("0");
        }
        binStr = temp.append(binStr);
    }
    return binStr;
}

方法2: 

//性能略优于方法1
string getBinStr(string hexStr) {
    long long val = strtoll(hexStr.c_str(), NULL, 16);
    char binary[32];
    for (int i = 31; i >= 0; i--) 
    { 
        binary[31 - i] = '0' + ((val >> i) & 1);
    }
    string binStr(binary);
    return binStr;
}

方法3:文章来源地址https://www.toymoban.com/news/detail-808195.html

#include <bitset>

//无法处理大于32位的数值。  性能与方法2差不多
string getBinStr(string hexStr) {
    long val = stol(hexStr.c_str(), NULL, 16);
    bitset<32> binaryNum(val);
    return binaryNum.to_string();
}

到了这里,关于C++篇——在linux下将字节转16进制字符串, 16进制字符串转2进制字符串的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言小技巧】16进制字符串与字符串互转

    平时我们在写功能需求时,难免不会遇到需要将 16 进制字符串转换成字符串,或者字符串转16进制字符串的需求,所以就有了这篇文章。 在进入主题之前,我们先来回顾一下字符和 16 进制的关系。我们知道正常的 16 进制数值(像 0x32 )和 ASIIC 码( 0x32 对应字符 2 )之间是互

    2024年02月02日
    浏览(56)
  • MFC 编辑框输入16进制字符串转换为16进制数或者10进制数据计算

    1. 编辑框添加变量,并选择变量类型为CString。     CString m_strReg;        DDX_Text(pDX, IDC_EDIT_REG, m_strReg); 2. 使用“strtoul”或“_tcstoul”函数将Cstring 类型转换为16进制/10进制数进行计算。     CString tmp;     UpdateData(TRUE);     UpdateData(FALSE);          OutputDebugString(m_strReg);  

    2024年02月16日
    浏览(58)
  • 【byte类型数据转换16进制字符串】

    1.byte类型数据长度为8bit(8位), 例如00101110。 2.16进制字符长度4bit(4位), 例如1101,表示D。 3.那么一个byte可以用2(8bit/4bit=2)个16进制字符表示。 4. 1中的00101110可分为0010和1110两部分。 5. 0010可以由00101110右移动4位获得,即001011104。注意,在java中byte是无符号的,全为正的,所有应该做

    2024年02月16日
    浏览(54)
  • C语言字符串转换为16进制

    方法二:自定义转换函数 输出结果: 这两种方法都可以将C语言字符串逐个字符转换为对应的16进制表示。第一种方法使用了sprintf函数来格式化输出,第二种方法则是通过强制类型转换将字符转换为无符号字符(unsigned char),然后使用printf函数输出对应的十六进制表示。

    2024年02月05日
    浏览(58)
  • C语言二进制数据和16进制字符串互转

    知识点:结构体中的“伸缩型数组成员”(C99新增) C99新增了一个特性:伸缩型数组成员(flexible array member),利用这项特性声明的结构,其最后一个数组成员具有一些特性。第1个特性是,该数组不会立即存在。第2个特性是,使用这个伸缩型数组成员可以编写合适的代码,就

    2024年02月13日
    浏览(45)
  • Springboot使用Netty连接Tcp接口(c语言二进制字节码转java字符串)

    一、引入netty的jar包 io.netty netty-all 二、使用netty框架 1、创建客户端 package com.iflytek.digtal.netty; import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel

    2024年02月20日
    浏览(48)
  • [C++]十六进制和字符串互相转化

    c4 :这个写法是将二进制右移四位,15的二进制是:00001111,右移四位得到0000;所以第一位为0; c15 :这个是将二进制和15的二进制进行位与运算:与运算是都是1才为1:00001111和00001111按位与得到00001111也就是lut[15] == E; 所以得到c为0E; 然后我们就得到了这一段非法字符的十六

    2024年02月15日
    浏览(50)
  • 【Golang】十六进制字符串转二进制字符串

    在计算机科学中,我们经常需要在不同进制的数字之间进行转换。Go语言提供了一系列的标准库来方便我们进行这些进制转换。本文将介绍如何使用Go语言将十六进制字符串转换为二进制字符串。 首先,我们定义一个函数 hexToBinary 用于执行这个转换。该函数接受一个十六进制

    2024年02月02日
    浏览(50)
  • C和指针(六)字符串、字符、字节

    字符串 1,C没有显式的字符串类型,以字符串常量形式出现,存储于字符数组中。 2,C字符串是一串以NUL字节结尾的字符。 1)字符内部不能出现NUL字节。 2)NUL字节是字符串的终止符,不是字符串的一部分,所以字符串长度不包括NUL字节。 3,头文件string.h包含了使用字符串

    2024年02月10日
    浏览(41)
  • 字符串(字节)长度计算

    字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。 一个字节(byte)8位(bit),十进制表示0~255。 两个字节16位,可表示十进制0~65535。 Unicode 做了一件事,就是给世界上所有字符都分配了一个唯一的数

    2024年02月05日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包