免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: zsszss0000
打印 上一主题 下一主题

[C] 【急】数值转换小程序 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2015-04-10 11:00 |只看该作者
  1. #include <stdio.h>
  2. #include <stdint.h>

  3. typedef union
  4. {
  5.   uint8_t byte[2];
  6.   uint16_t word;
  7. } xxx_t;

  8. int main( void )
  9. {
  10.   xxx_t test =
  11.   {
  12.     .byte[1] = 0x8b,
  13.     .byte[0] = 0xd7
  14.   };

  15.   uint16_t b;

  16.   b = test.word;

  17.   printf( "b = %hu\n", b );

  18.   return 0;
  19. }
复制代码

论坛徽章:
3
巳蛇
日期:2014-04-24 17:25:352015年辞旧岁徽章
日期:2015-03-03 16:54:15NBA常规赛纪念章
日期:2015-05-04 22:32:03
12 [报告]
发表于 2015-04-10 11:44 |只看该作者
定义字节序宏,不同字节序采用不同的组合方法

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
13 [报告]
发表于 2015-04-10 14:13 |只看该作者
这种写法会出问题
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string.h>
  4. using namespace std;
  5. int main ( int argc, char *argv[] )
  6. {
  7.         char s_c[2]={0};
  8.         unsigned char u_c[2]={0};
  9.        
  10.         int s_i=0;
  11.         unsigned int u_i=0;
  12.         signed short int s_s=0;
  13.         unsigned short int u_s=0;

  14.         s_c[0]=0x2E;
  15.         s_c[1]=0xE0;

  16.         u_c[0]=0x2E;
  17.         u_c[1]=0xE0;

  18.         printf ( "%x %x %x %x\n",s_c[0],s_c[1],u_c[0],u_c[1]);
  19.         printf ( "%x %x %x %x\n",s_c[0]<<8,s_c[1],u_c[0]<<8,u_c[1]);
  20.         printf ( "%x %x\n",s_c[0]<<8+s_c[1],u_c[0]<<8+u_c[1]);
  21.         printf ( "%x %x\n",s_c[0]<<8|s_c[1],u_c[0]<<8|u_c[1]);
  22.         printf ( "%x %x\n",s_c[0]*256+s_c[1],u_c[0]*256+u_c[1]);
  23.         printf ( "%x %x\n",s_c[0]*0x100+s_c[1],u_c[0]*0x100+u_c[1]);

  24.         cout<<endl<<endl;

  25.         cout<<"aaaaaaaaaa"<<endl;
  26.         s_i=u_c[0]<<8+u_c[1];
  27.         u_i=u_c[0]<<8+u_c[1];
  28.         s_s=u_c[0]<<8+u_c[1];
  29.         u_s=u_c[0]<<8+u_c[1];

  30.         cout<<dec<<s_i<<":"<<hex<<"0x"<<s_i<<endl;
  31.         cout<<dec<<u_i<<":"<<hex<<"0x"<<u_i<<endl;
  32.         cout<<dec<<s_s<<":"<<hex<<"0x"<<s_s<<endl;
  33.         cout<<dec<<u_s<<":"<<hex<<"0x"<<u_s<<endl;

  34.         cout<<"bbbbbbbbbb"<<endl;
  35.         s_i=u_c[0]<<8|u_c[1];
  36.         u_i=u_c[0]<<8|u_c[1];
  37.         s_s=u_c[0]<<8|u_c[1];
  38.         u_s=u_c[0]<<8|u_c[1];

  39.         cout<<dec<<s_i<<":"<<hex<<"0x"<<s_i<<endl;
  40.         cout<<dec<<u_i<<":"<<hex<<"0x"<<u_i<<endl;
  41.         cout<<dec<<s_s<<":"<<hex<<"0x"<<s_s<<endl;
  42.         cout<<dec<<u_s<<":"<<hex<<"0x"<<u_s<<endl;

  43.         cout<<"cccccccccc"<<endl;
  44.         s_i=u_c[0]*0x100+u_c[1];
  45.         u_i=u_c[0]*0x100+u_c[1];
  46.         s_s=u_c[0]*0x100+u_c[1];
  47.         u_s=u_c[0]*0x100+u_c[1];

  48.         cout<<dec<<s_i<<":"<<hex<<"0x"<<s_i<<endl;
  49.         cout<<dec<<u_i<<":"<<hex<<"0x"<<u_i<<endl;
  50.         cout<<dec<<s_s<<":"<<hex<<"0x"<<s_s<<endl;
  51.         cout<<dec<<u_s<<":"<<hex<<"0x"<<u_s<<endl;

  52.         return 1;
  53. }
复制代码
2e ffffffe0 2e e0
2e00 ffffffe0 2e00 e0
2e00 2e00
ffffffe0 2ee0
2de0 2ee0
2de0 2ee0


aaaaaaaaaa
11776:0x2e00
11776:0x2e00
11776:0x2e00
11776:0x2e00

bbbbbbbbbb
12000:0x2ee0
12000:0x2ee0
12000:0x2ee0
12000:0x2ee0
cccccccccc
12000:0x2ee0
12000:0x2ee0
12000:0x2ee0
12000:0x2ee0


红颜色标记的部分不对吧,为什么不等于0x2ee0呢?
u_c[0]<<8+u_c[1];

=u_c[0]<<8|u_c[1];
到底有什么差别呢?


回复 4# hellioncu


   

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
14 [报告]
发表于 2015-04-10 14:24 |只看该作者
zsszss0000 发表于 2015-04-10 14:13
这种写法会出问题2e ffffffe0 2e e0
2e00 ffffffe0 2e00 e0
2e00 2e00


优先级问题,请加上括号

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
15 [报告]
发表于 2015-04-10 14:41 |只看该作者
好了,大神!
优先级这种问题真的很头疼!!!回复 14# hellioncu


   

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
16 [报告]
发表于 2015-04-10 14:58 |只看该作者
zsszss0000 发表于 2015-04-10 14:41
好了,大神!
优先级这种问题真的很头疼!!!回复 14# hellioncu


自己拿不准的就加上括号吧,人家看了也明白。
现在有些编译器比较智能,会给你警告的,留意下就行

论坛徽章:
0
17 [报告]
发表于 2015-04-11 19:11 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP