博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列。
阅读量:7034 次
发布时间:2019-06-28

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

编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列。

实现了unsigned long型的转换。

// 十进制转换为二进制,十进制数的每1bit转换为二进制的1位数字

<pre lang="c" escaped="true" line="1">
char *int_to_bin(unsigned long data)
{
int bit_num = sizeof(unsigned long) * 8;
char *p_bin = new char[bit_num+1];
p_bin[bit_num] = '\0';
for (unsigned int i = 0; i < bit_num; ++i)
{
p_bin[i] = data << i >> (bit_num-1);
if (p_bin[i] == 0)
p_bin[i] = '0';
else if (p_bin[i] == 1)
p_bin[i] = '1';
else
p_bin[i] = 'a';
}
return p_bin;
}
</pre>

// 十进制转换为十六进制,十进制数的每4bit转换为十六进制的1位数字

<pre lang="c" escaped="true" line="1">
char *int_to_hex(unsigned long data)
{
int bit_num = sizeof(unsigned long) * 8;
char *p_hex = new char[sizeof(unsigned long)*8/4+3];
p_hex[0] = '0';
p_hex[1] = 'x';
p_hex[bit_num/4+2] = '\0';
char *p_tmp = p_hex + 2;
for (unsigned int i = 0; i < bit_num/4; ++i)
{
p_tmp[i] = data << (4*i) >> (bit_num-4);
if (p_tmp[i] >= 0 && p_tmp[i] <= 9)
p_tmp[i] += '0';
else if (p_tmp[i] >= 10 && p_tmp[i] <= 15)
p_tmp[i] = p_tmp[i] - 10 + 'A';
}
return p_hex;
}
</pre>

转载于:https://www.cnblogs.com/liweilijie/p/4984049.html

你可能感兴趣的文章
python学习笔记2
查看>>
使用git命令做版本管理
查看>>
再次开篇
查看>>
Install VM Tools -- kernel header path
查看>>
主机无法访问虚拟机linux上启动的tomcat服务
查看>>
Android中this、super的区别
查看>>
ibatis log4j 配置 显示sql
查看>>
hadoop-2.3.0-cdh5.1.0完全分布式集群配置及HA配置(待)
查看>>
win7 + vs2013 + libiconv.lib
查看>>
drupal的drupal_register_shutdown_function
查看>>
创建一个多线程的QTcpServer
查看>>
视频取首帧,并保存到SDCard
查看>>
Servlet-获得web.xml配置参数信息
查看>>
Spring初始化容器—实例化bean对象
查看>>
android 自定义系统键盘
查看>>
MySQL 查询优化器(总结)
查看>>
2014年6月28日
查看>>
android读取手机验证码
查看>>
awk 日常实例
查看>>
Python直接赋值、浅拷贝和深度拷贝解析
查看>>