当前位置: 首页 > news >正文

将十六进制字符串转换为二进制字符串的方法(Python,C++)

在计算机科学中,十六进制(Hexadecimal)是一种常用的数值表示法,它能够以更紧凑的形式展示二进制数据。一个十六进制字符可以直接映射到四位二进制数。因此,将十六进制字符串转换为二进制字符串的过程本质上是对每一位十六进制字符进行替换并扩展为其对应的四位二进制值。

Python 实现

Python 是一种功能强大的编程语言,支持多种方式完成这种转换任务。下面是一个简单的例子:

def hex_to_binary(hex_str):

    binary_str = ''.join(format(int(char, 16), '04b') for char in hex_str.upper())

    return binary_str

 

hex_input = "1A3F"

binary_output = hex_to_binary(hex_input)

print(binary_output) # 输出结果应为:0001101000111111

在此代码中,format(int(char, 16), '04b') 的作用是将每个十六进制字符转换为整数后再格式化为固定长度的四位二进制字符串1。通过列表推导式逐一处理输入字符串中的所有字符,并最终连接起来形成完整的二进制字符串1

C++ 实现

如果偏好于使用 C++ 完成同样的工作,则可以参照如下示例代码:

#include <iostream>

#include <string>

using namespace std;

 

// 辅助函数定义部分省略...

string GetBinaryStringFromHexString(string strHex) {

    string sReturn = "";

    unsigned int len = strHex.length();

 

    // 确保所有的输入都是大写字母以便匹配switch-case语句

    for(unsigned int i=0;i<len;i++) strHex[i]=toupper(strHex[i]);

 

    for (unsigned int i = 0; i < len; ++i) {

        switch (strHex[i]) {

            case '0': sReturn += "0000"; break;

            case '1': sReturn += "0001"; break;

            case '2': sReturn += "0010"; break;

            case '3': sReturn += "0011"; break;

            case '4': sReturn += "0100"; break;

            case '5': sReturn += "0101"; break;

            case '6': sReturn += "0110"; break;

            case '7': sReturn += "0111"; break;

            case '8': sReturn += "1000"; break;

            case '9': sReturn += "1001"; break;

            case 'A': sReturn += "1010"; break;

            case 'B': sReturn += "1011"; break;

            case 'C': sReturn += "1100"; break;

            case 'D': sReturn += "1101"; break;

            case 'E': sReturn += "1110"; break;

            case 'F': sReturn += "1111"; break;

            default: throw invalid_argument("Invalid hexadecimal character");

        }

    }

 

    return sReturn;

}

 

int main(){

    cout << GetBinaryStringFromHexString("1A3F") << endl; // 应输出:0001101000111111

    return 0;

}

这里采用了与先前提到的逻辑一致的做法——逐一遍历输入字符串中的每一个字符,依据其可能取值范围内的不同情况分别追加相应的四位二进制序列2。值得注意的是,在实际应用过程中还需要考虑异常处理机制以增强程序健壮性。


总结

无论是在 Python 还是 C++ 中实现十六进制字符串到二进制字符串之间的相互转化都相对直观明了。关键是理解两者之间一对一的关系结构以及如何有效运用各自语言特性简化操作流程。

 

相关文章:

  • ZYNQ笔记(十三):双核 AMP 通信实验
  • 【IDEA】怎么修改IDEA的JDK版本
  • tomcat远程Debug
  • 3.1 Agent定义与分类:自主Agent、协作Agent与混合Agent的特点
  • 高等数学第一章---函数与极限(1.3 函数的极限)
  • 海量粒子特效解决方案:VEG
  • Java线程中断机制详解
  • JAVA设计模式——(三)桥接模式
  • 桥接模式:分离抽象与实现的独立进化
  • C语言中的递归1.0
  • 时序数据库IoTDB自研的Timer模型介绍
  • 基于自主大型语言模型代理的AIoT智能家居
  • 网络原理 - 5(TCP - 2 - 三次握手与四次挥手)
  • 【笔记】CentOS7部署K8S集群
  • 经验分享-上传ios的ipa文件
  • 2.2 主流大模型架构:GPT、DeepSeek、GLM、Claude、QwQ、Qwen2.5-Max等模型的比较与应用场景
  • sizeof和strlen的区别
  • 【Java学习笔记】循环结构
  • 翻倍缠论系统+拐点多空雷达,组合指标的使用操盘技术
  • J1800主板刷黑群晖
  • 嫦娥五号月球样品将借给这些国家机构
  • 人民日报:外卖平台应保障好骑手就业权益,消除后顾之忧
  • 最高检发布知识产权检察白皮书,“知识产权检察厅”同日亮相
  • 神舟二十号航天员乘组计划于10月下旬返回
  • 马上评丨全面取消 “仅退款”,反内卷的必然
  • 河南省濮阳市委常委、组织部部长刘建茂接受审查和调查