给出一个十六进制的数0xFF 0x80 (只有2“位”) 将其转换成有符号的一字节的十进制整数
#include <stdio.h>
#include<iostream>
#include <stdlib.h>
#include<string.h>
using namespace std;
int main()
{
char ch[8];
char ch2[8]={'0','0','0','0','0','0','0','0'};
ltoa(strtol("0xba",'\0',16),ch,2);
//cout<<strlen(ch);
for(int i=8-strlen(ch),j=0;i<8;i++,j++)
{
ch2[i]=ch[j];
}
if(ch2[0]=='1')
{
cout<<"minus:"<<endl;
cout<<"-"<<(256-strtol("0xba",'\0',16)) <<endl;
}
else{
cout<<"+:"<<endl;
cout<<strtol("0xba",'\0',16)<<endl;
}
return 0;
}
^(* ̄(oo) ̄)^:红色数字部分为const char*类型;
主要应用的函数为:strtol;ltoa
第一个函数是将第一个参数里的字符串转换为十进制,遇到\0结束,后边的数字2-36,指的是前边的字符串代表的数字进制,而不是将其转换为某进制。
strtol是将第一个参数的数字转换成第三个参数的进制并存入第二个参数的数组里。char *ltoa(long value,char *string,int radix)
原码,反码,补码,运算不介绍,这里只是采取投机取巧的方式。。。。
之所以用了ch2是因为ltoa只是把二进制从一开始的有效位赋给ch从零开始。前边如果有0 ,它并没有进行赋值。
例如:long(strtol)转换后的二进制为:00010101---》ltoa只把10101赋给了ch[0]=1,ch[1]=0,ch[2]=1,ch[3]=0,ch[4]=1....ch[5]=null.....以此类推。。。。。。
- 项目32.1输出小星星
- Linux内核中的进程组及会话 http://blog.csdn.net/daniel_h1986/article/details/6067685
- CentOS 7安装配置FTP服务器
- 机房收费系统文档
- C++学习笔记之多态(虚函数)
- 4、Hibernate三种状态的讲解
- 微网站|手机端html弹窗、弹层、提示框、加载条
- hadoop 环境搭建要点
- Linux 命令 - id: 显示用户的身份标识
- javascript 中检测数据类型的方法
- UNP v1 第一章:简介
- CentOS 7安装配置Samba服务器
- CentOS 7 上systemctl 的用法
- 国庆开始只切了几道水题,想了想还是记录一下吧
- linux,shell后台启动一个死循环程序不停输出信息,当关闭shell后重新打开为嘛没输出了
- hdu 4825 Xor Sum
- CCProgressTo 和CCProgressTimer
- 计算机四则运算
- 切换默认Activity和Fragment的动画
- CentOS 7 主机名的修改