社区
C++ 语言
帖子详情
我需要用C++将二进制转换成16进制,然后再把16进制转成2进制,现在不知道如何写这样一个程序。
无聊的职业生涯
2006-02-20 09:48:40
我现在有这样一堆字符串:0001 0100 0001 0100 1001 1000 1111 0110 需要把这些数字转成16进制的,请问如何转,
函数形式如:
char* Bin2Ox(char* psz /* "0001 0100 0001 0100 1001 1000 1111 0110"*/)
{
.........
return "0xAB";
}
...全文
671
8
打赏
收藏
我需要用C++将二进制转换成16进制,然后再把16进制转成2进制,现在不知道如何写这样一个程序。
我现在有这样一堆字符串:0001 0100 0001 0100 1001 1000 1111 0110 需要把这些数字转成16进制的,请问如何转, 函数形式如: char* Bin2Ox(char* psz /* "0001 0100 0001 0100 1001 1000 1111 0110"*/) { ......... return "0xAB"; }
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
redf0x_1
2006-02-20
打赏
举报
回复
16进制到二进制如法炮制
smartcomplier
2006-02-20
打赏
举报
回复
先用itoa(int,char*,16)转成16进制表示的字符串,也可用sprintf()转.
然后再用sprintf()转成二进制.
OK,给分吧!
redf0x_1
2006-02-20
打赏
举报
回复
#include "stdafx.h"
using namespace std;
int onebinary(char binary,int i)
{
if(binary=='1')
{
switch(i)
{
case 0:
return 1;
case 1:
return 2;
case 2:
return 4;
case 3:
return 8;
default:
return -1;
}
}
else
if(binary=='0')
return 0;
else
return -1;
}
char numtoletter(int letternumber)
{
char ch;
assert(letternumber>=0&&letternumber<=15);
if(letternumber>=0&&letternumber<=9)
ch = letternumber+'0';
else
ch = letternumber-10+'A';
return ch;
}
string convert(string input)
{
string output;
char ch;
int size=input.size();
int j=1,letternumber=0;
for(int i=size-1;i>=0;i--,j++)
{
letternumber+=onebinary(input[i],(j-1)%4);
if(j%4==0)
{
ch=numtoletter(letternumber);
output.insert(output.begin(),ch);
if(j%8==0)
output.insert(output.begin(),' ');
letternumber=0;
}
if(i==0&&j%4!=0)
{
ch=numtoletter(letternumber);
output.insert(output.begin(),ch);
}
}
output.insert(output.begin(),'x');
output.insert(output.begin(),'0');
return output;
}
int main()
{
string input,output;
char *p;
cout<<"please input the string to convert:\n";
cin>>input;
output = convert(input);
cout<<output<<endl;
}
learnlife
2006-02-20
打赏
举报
回复
用abcd表示一组
for(;;){
取一段;
(a-48)*8+(b-48)*4+(c-48)*2+(d-48)*1得到这个数;
转为16进制存储其对应字符就可以了;
}
无聊的职业生涯
2006-02-20
打赏
举报
回复
哈哈,我知道是4个4个一组,可是怎么转换成16进制呢,我没有做过样的算法啊,
OpenHero
2006-02-20
打赏
举报
回复
4个4个一组
weis_mai
2006-02-20
打赏
举报
回复
如果不考虑机器字的长度,完全同意du51的解,但是考虑机器字的话,从后往前,以机器字长分组,每组调用du51的change函数。如32位机器上
#define MACHINE_WORD 32
len=strlen(src);
while (len) {
len-=MACHINE_WORD;
len=(len<0)?0:len;
change(des, src+len);
src[len]=0;
// To Use des
}
du51
2006-02-20
打赏
举报
回复
#include<iostream>
#include<cstring>
using namespace std;
void change(char *des,char *src)
{
if(!*src)return;
int temp=0;
while(*src)temp=temp*2+(*src++-48);
sprintf(des,"%s","0x");
sprintf(des+strlen(des),"%08x",temp);
}
int main()
{
char src[33]={0},des[11]={0};
cout<<"请输入你的数(B)"<<endl;
cin>>src;
change(des,src);
cout<<"十六进制是:"<<des<<endl;
system("PAUSE");
return 0;
}
C++
十六进制转二进制
十进制转十六进制 十六进制转二进制的小
程序
将二进制文件转换为
16进制
自己
写
的关于将二进制文件转换为十六进制并显示的小工具,也可以保存为文本文件。
c++
2.8.10进制转换
c++
2.8.10 进制 转换 打印
成
表格形式。。。。。。。。。。。。
16进制
与10进制相互转换
c++
代码
16进制
与10进制相互转换的代码,10转
16进制
,16转10进制,包含源文件与头文件,直接移植后可以使用。
C++
实现各进制间转换
c++
实现二进制到八进制,十进制,十六进制的转换
C++ 语言
65,198
社区成员
250,522
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章