求助:简化代码(二进制转十六进制)

Wang471981125 2010-11-25 08:20:44

CString CView::Bin2Hex(CString a)
{
if(a=="0000")
return "0";
else
if(a=="0001")
return "1";
else
if(a=="0010")
return "2";
else
if(a=="0011")
return "3";
else
if(a=="0100")
return "4";
else
if(a=="0101")
return "5";
else
if(a=="0110")
return "6";
else
if(a=="0111")
return "7";
else
if(a=="1000")
return "8";
else
if(a=="1001")
return "9";
else
if(a=="1010")
return "A";
else
if(a=="1011")
return "B";
else
if(a=="1100")
return "C";
else
if(a=="1101")
return "D";
else
if(a=="1110")
return "E";
else
if(a=="1111")
return "F";
else
return "0";

}


CString形式的二进制数转CString的十六进制
...全文
168 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
寒冰2046 2011-11-17
  • 打赏
  • 举报
回复
来个跨平台的。
static void *BinToHex(const void *bin, size_t size, void *outbuf)
{
if (bin == NULL || outbuf == NULL)
{
return NULL;
}

static char tab[] = "0123456789ABCDEF";
unsigned char *src = (unsigned char *)bin;
unsigned char *dst = (unsigned char *)outbuf;
while (size-- > 0)
{
*dst++ = tab[*src >> 4];
*dst++ = tab[*src & 0xF];
++src;
}

return outbuf;
}
Wang471981125 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 muzizongheng 的回复:]

晕, 真烂。

CString strTemp = _T("0011"); //你的二进制字符串
int nTemp = _tcstol(strTemp, NULL, 2);
strTemp.Format(_T("%X"), nTemp);
[/Quote]
字符串是64位的,只能转换32为,而且是有符号数,最多转31位数字呢》
有其他函数参考吗
edwardliqi 2010-11-25
  • 打赏
  • 举报
回复
原来还可以这样做啊。。。

学习了
muzizongheng 2010-11-25
  • 打赏
  • 举报
回复
还是0分贴。。。。
muzizongheng 2010-11-25
  • 打赏
  • 举报
回复
楼主加分吧。 那个是另外的问题了。 呵呵。
Wang471981125 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 muzizongheng 的回复:]

晕, 真烂。

CString strTemp = _T("0011"); //你的二进制字符串
int nTemp = _tcstol(strTemp, NULL, 2);
strTemp.Format(_T("%X"), nTemp);
[/Quote]
不错
再帮忙看看,十六进制转二进制吧
http://topic.csdn.net/u/20101124/15/224a97bf-1989-4ee0-8fe0-670fa6ddc32b.html
Eleven 2010-11-25
  • 打赏
  • 举报
回复
对的,先将CString转成整型,然后在Format为十六进制形式
muzizongheng 2010-11-25
  • 打赏
  • 举报
回复
晕, 真烂。

CString strTemp = _T("0011"); //你的二进制字符串
int nTemp = _tcstol(strTemp, NULL, 2);
strTemp.Format(_T("%X"), nTemp);

向立天 2010-11-25
  • 打赏
  • 举报
回复
你查一下sccanf
走好每一步 2010-11-25
  • 打赏
  • 举报
回复
直接用sprintf

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧