标题:右移 32 位怎么没变化?
取消只看楼主
lqab1983
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2013-11-29
结帖率:16.67%
已结贴  问题点数:10 回复次数:3 
右移 32 位怎么没变化?
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

int main()
{
 char a[20]="2232.0822";
 int b = 0;
 b = (int)(atof(a)*10e3);
 printf("b is %d\r\n", b);
 printf("%x\r\n",b);
  printf("%x\r\n",b>>16);
   printf("%x\r\n",b>>8);
    printf("%x\r\n",b&0xff);
 
 system("pause");
}

为什么b没有发生移位,我在处理GPS经纬度遇到的问题。
想把字符串“2232.0822”想转换成数字,在右移放到4个字节里保存,就这个目的为什么不行?

有什么解决办法
搜索更多相关主题的帖子: include system 经纬度 字符串 
2014-06-28 16:58
lqab1983
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2013-11-29
得分:0 
我的本意是比如把经度116.817153的字符串,因为GPS吐得语句是ASCII码,先转换成float类型,再变成整数,在移位到4个字节以16进制数去保存,最后变成06 f6 7d 01 我该怎么做啊? 难道右移32为不行吗?
2014-06-30 09:31
lqab1983
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2013-11-29
得分:0 
那我怎么表示了。char a[4];要达到
a[0] = 0x06;
a[1] = 0xf6;
a[2] = 0x7d;
a[3] = 0x01;
该怎么处理啊
2014-06-30 09:56
lqab1983
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2013-11-29
得分:0 
其实我的本意是GPS数据吐出来的不都是ASCII吗,都当做字符串处理
我解析到变量char card_latitude[22]={0x0};
         card_latitude 赋值 "3803.2312";
然后我有个数组char gps_info_buffer[70] = {0};
int currlen =0;
gps_info_buffer[currlenn++] = 0x7e;
gps_info_buffer[currlenn++] = 0x11;
gps_info_buffer[currlenn++] = 0x22;

int latitude = 0;
latitude = (int)(atof(card_latitude) *10e5);
    dbg_print("latitude is %d\r\n",latitude);
    sprintf((char *)(gps_info_buffer + currlen), "%x", latitude);
    currlen += 4;

我个人认为gps_info _buffer 该是 7e 11 22 02 44 53 B8 (16进制)

可是结果不对?是 7e 11 22 30  00 00 00
2014-07-02 14:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-433447-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017529 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved