如何把整形转换成两位十六进制数

ASPNETDB 2009-08-03 12:03:50
如何把整形转换成两位十六进制数:比如——258(十)转换成十六进制是0x0102
现在我想得到0x01 0x02
不支持字符串。。呵呵
...全文
475 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ASPNETDB 2009-08-03
  • 打赏
  • 举报
回复
二楼的启发很大。。哈哈。。thanks
ASPNETDB 2009-08-03
  • 打赏
  • 举报
回复
现在是如何把0x0102 得到0x01 0x02
adventurelw 2009-08-03
  • 打赏
  • 举报
回复
这个,整形是三十二位数据,所以可以有8个十六进制位
除非是short
short n;
n >> 8;//只剩下高8位数据
n % 256;//结果是低八位数据
或者n & 0xFF;//结果也是低8位数据
liao05050075 2009-08-03
  • 打赏
  • 举报
回复
你就除一下16就是了。。
abcdef0966 2009-08-03
  • 打赏
  • 举报
回复
n = a * 2^8 + b;
a b 就是你要的数值

#include <stdio.h>

int main()
{
short n,tmp;
printf("enter your short integer:\n");
scanf("%d",&n);
int a,b;
b = n & 0xFF;//相当于 n % 8;
a = n >> 8; //相当于n / 256;

printf("%x\n",a);
printf("%x\n",b);
return 0;
}
coolcoffee4051982 2009-08-03
  • 打赏
  • 举报
回复
移位??????
steven_007 2009-08-03
  • 打赏
  • 举报
回复
mark
lijian22500 2009-08-03
  • 打赏
  • 举报
回复
其实 与 和移位都可以的
lijian22500 2009-08-03
  • 打赏
  • 举报
回复
int i = 0x0102
char * p = NULL;
p = (char*)&i;
二进制 0000000100000002
unsigned char a[2];
a[1] = *p;//取低位 00000002
a[0] = *(p + 1) //取高位 00000001

这是little-endian的。要是大端big-endian就有所不同
ysysbaobei 2009-08-03
  • 打赏
  • 举报
回复
顶下
xiaojinming2008 2009-08-03
  • 打赏
  • 举报
回复
printf("%02x", n);
lxq_lanzhou 2009-08-03
  • 打赏
  • 举报
回复
二楼说的好
支持下载,一、据类型 常量是有据类型的 变量必须声明其据类型 (1)划分: 1.基本据类型(四类八种) 值型: 整型:bute、short、int、long 浮点型:float、double 字符型:char 布尔型:boolean 2.引用据类型:除基本据类型外的所有都是基本据类型 值型: 类型 所占空间 取值范围 默认值 字节型 byte 1个字节(8位) -128—127 0 短整型 short 2个字节(16位) -32768—32767 0 整形 int 4个字节(32位) +-2(的31次方)约21亿 0 长整形 long 8个字节(64位) -2(的63次方)—2(的63次方)-1 0 浮点型: 单精度浮点型 float 4个字节(32位) 1.4013E-45—3.4028E+38 0.0F 双精度浮点型 double 8个字节(64位) 4.9E-324—1.7977E+308 0.0D 字符型: 字符型 char 2个字节(16位) 0—2(的16次方)-1 \u0000 布尔型: 布尔型 boolean 1个字节(8位) ture,false false (2)整形常量常用的三种表现形式: 1.二进制 2.八进制:八进制的以0开头 3.十六进制十六进制的以0x开头,0ffff:一个f代表4位 二、类型的转换 1.自动转换 2.强制转换 在一个表达式中,先把所有转换成为级别最高的那个类型之后,再进行运算 byte,short,char 只要在表范围中,不用强转可以直接进行赋值。但是要是超出范围,就必须要进行强转了 类型的优先级别:byte,short,char,int,long,float,double (低–高) 右>左–强制类型转换 右<左–自动转换 右=左–不用转 三、运算符: 算术运算符: +,-,*,/,%,++,– 赋值运算符:= 关系运算符: >,<,>=,<=,==,!= instanceof 逻辑运算符: &&,||,!,^ 位运算符: &,|,^,~ , >>,<<,>>> 条件运算符:?:(三目运算符) 扩展赋值运算符:+=,-=,*=,/= 1.算运算符(+,-,*,/,%,++,–) (1) 两个int类型据运算,结果是int类型 两个操作中只要有一个是double类型,那么结果是double类型的据 (2) “+”号的作用 1.表示正 2.相加运算 3.字符串拼接 在单独运算的时候 ++i,i++ 没有任何区别,都是加1操作相当于 i=i+1 i++;先运算,后加1(先运算后加减) ++i;先加1,后运算(先加减后运算) 2.逻辑运算符(&&,||,!,^) 逻辑非 ! 取反 逻辑异或 ^ 操作一样,结果为false;操作不一样,结果为true 逻辑与 & 只要有一个操作是false,那么结果就是false 短路与 && 短路与跟逻辑与 结果会一模一样。只要第一个操作是false,那么结果一定是false,那么后面的那个操作就不用计算了。提高了 效率。 逻辑或 | 只要有一个是true,那么结果就是true 短路或 || 短路或与逻辑或 结果一模一样。只要第一个操作是true,那么第二个就不用计算,结果就是true。同样为了提高效率。 3.关系运算符(>,<,>=,<=,==,!=) ==:比较变量时是判断值是否相等;比较引用变量时是判断两个在堆中的存储的地址是否相等 equals:操作时是判断两个变量是否是对同一对象的引用,即对堆中的内容进行比较 在比较引用变量时: ==判断的对象的地址 equals判断的是对象的内容 4.位运算符( &,|,^,~ , >>,<<,>>>) 在操作十进制的时候首先转换为二进制的进行操作 &:二进制都为1时为1,一个为0则为0 |:二进制都为0时为0,一个为1则为1 ^:二进制都为1时为0,一个为0则为1 ~:一个正取~时,取反、减一、取反、加符号 一个负取~时,直接取反

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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