string类型二进制转化为string类型十进制:再谈int和string互化

本文介绍了一种将二进制字符串转换为十六进制字符串的方法,通过解析二进制位,将其转换为相应的十进制数,再利用stringstream进行格式转换。文章讨论了函数返回值的正确使用,并提供了完整的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

preface

之前有一篇转载的文章提到了int和string的互化,但在今天解决问题的时候仍然感觉不足,在此补充。

原问题:

string类型二进制转化为string类型十进制

遇到的问题及解决

  1. 对函数return的理解。在main中直接使用函数(例如输出),相当于直接使用函数内返回的变量。
  2. int ——> string 类型:解决参考博客,其中的详细解释:
//⚠️头文件:#include <sstream>
            stringstream ss;//?清空
            ss<<sum;//?向流中传值
            ss>>hexString;//?向hexString里写入值
  1. string ——> int 类型:参考我的上一篇。直接减去'0'
  2. at()总是出问题。解决:直接可以吧字符串看成字符数组,用string[i]直接获取即可。

解决代码:

#include <iostream>
#include <cmath>
#include <string>
#include <sstream>

using namespace std;

string bin2Hex(const string& binaryString){
    string hexString;
    int sum=0;
    for(int i=0;i<binaryString.length();i++){
        if(binaryString[i]=='0'||binaryString[i]=='1'){
            sum+=(binaryString[i]-'0')*pow(2,binaryString.length()-1-i);
            stringstream ss;
            ss<<sum;
            ss>>hexString;
        }
        else
            hexString = "type wrong!";
    }

    return hexString;
}

int main(){
    string hex;
    getline(cin, hex);
    cout<<bin2Hex(hex)<<endl;
    return 0;
}

"the best people in life are free."

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值