博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二进制转成十六进制
阅读量:6708 次
发布时间:2019-06-25

本文共 964 字,大约阅读时间需要 3 分钟。

二进制转成十六进制

1.基本原理:由于十六进制数基数是2的四次幂,所以一个二进制转换为十六进制,如果是整数,只要从它的低位到高位每4位组成一组,然后将每组二进制数所对应的数用十六进制表示出来。如果有小数部分,则从小数点开始,分别向左右两边按照述方法进行分组计算。

(11010111100010111)2 = (3AF17)16

原文:

http://www.chinatax.gov.cn/jypx/jsjjczs/zp_2to16.htm

2.二进制与十六进制的关系

2进制 0000 0001 0010 0011 0100 0101 0110 0111

16进制 0 1 2 3 4 5 6 7

2进制 1000 1001 1010 1011 1100 1101 1110 1111

16进制 8 9 a(10) b(11) c(12) d(13) e(14) f(15)

可以用四位数的二进制数来代表一个16进制,如(3A)16 转为二进制为:

3为0011A 1010,合并起来为00111010。可以将最左边的0去掉得(111010)2

右要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,将各单位对照出16进制的值即可。

3.示例1

FILE *dest = fopen("aa.txt", "r+"); //写入16进制的文件

FILE *src = fopen("a.cpp", "r");    //读入的文件

while( (ch = getc(src) ) != EOF )

{

fprintf(dest, "%2x", ch);

}

4.示例2

char* bin2hex(char *src, unsigned int size)

{

char dest[100] = {0};

if(sizeof(dest)/2 < size)

{

size = sizeof(dest)/2;

}

for(int i = 0; i < size; i++)

{

sprintf(&dest[i*2], "%2x", (unsigned char)src[i]);

}

return dest;

}

原文:

更为详细的介绍

http://bbs.csdn.net/topics/270017393

转载地址:http://chnlo.baihongyu.com/

你可能感兴趣的文章
Chrome 主页被篡改
查看>>
糟糕的软件设计:幻想出来的问题
查看>>
openlayers入门开发系列之批量叠加zip压缩SHP图层篇
查看>>
[观点]微软报告称开源更昂贵
查看>>
gcc中的-Wl,rpath=<your_lib_dir>选项
查看>>
Javascript调用Webservice的多种方法 .
查看>>
让 linux 交互式命令行程序支持方向键等功能
查看>>
Linux 启动、关闭、重启网络服务
查看>>
[转载]定制CentOS 6.3 自动安装盘
查看>>
js生成动态的飘过效果
查看>>
Java进阶05 多线程
查看>>
SQLSERVER性能监控级别步骤
查看>>
Java使用ScriptEngine(javax.script)
查看>>
Nhibernate中 Many-To-One 中lazy="proxy" 延迟不起作用的原因
查看>>
C# COM Object for Use In JavaScript / HTML, Including Event Handling
查看>>
svn权限设置
查看>>
MVC验证11-对复杂类型使用jQuery异步验证
查看>>
C++static关键字用法
查看>>
excel在msdn上的说明文档
查看>>
指尖下的js ——多触式web前端开发之一:对于Touch的处理(转)
查看>>