| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1031 人关注过本帖, 1 人收藏
标题:C类型转换问题
只看楼主 加入收藏
Robinson1988
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-8-23
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:24 
C类型转换问题
有如下需求:
某个文件里面存储了如下值(以十六进制方式存储):
。。。。。03003200 09008001 ffff0000 00000000 00000000 00000000 00800000
每2位表示一个字节,比如03是一个字节,00是一个字节,32也是一个字节
现在以每个字节读取文件内容放入一个字符数组

比如我将03 放入数组str[36],00放入数组str[37]

有个特殊需求就是0300这2个字节表示一个特殊含义
0300在Linux上是反着存储的,所以本来的实际值应该是0003,然后再用0x00ff与0003得到3
怎么用C语言获得0003?

搜索更多相关主题的帖子: 十六进制 C语言 Linux 
2011-08-23 15:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:3 
你真奇怪,这种是C的惯例存储格式呀,说什么linux如何如何呢。你说的是双字节数据类型的存储格式,读入第一个字节是低位字节,第二个字节是高位字节。在处理双字节数值数据时,将高位字节数值左移8位,加上低位字节,就是所求数据的值。

授人以渔,不授人以鱼。
2011-08-23 16:01
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:3 
以下是引用TonyDeng在2011-8-23 16:01:28的发言:

你真奇怪,这种是C的惯例存储格式呀,说什么linux如何如何呢。你说的是双字节数据类型的存储格式,读入第一个字节是低位字节,第二个字节是高位字节。在处理双字节数值数据时,将高位字节数值左移8位,加上低位字节,就是所求数据的值。


little ending 跟big ending都不知道。
无语。
2011-08-23 16:07
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 3楼 Devil_W
白痴,将视为什么符当作怎么处理。你公司程序员之中最没水平的恐怕就是你了,还拿高工资,扫厕所的组长吧?

授人以渔,不授人以鱼。
2011-08-23 16:23
Robinson1988
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-8-23
收藏
得分:0 
回复 2楼 TonyDeng
我对你的回答表示很遗憾
2011-08-23 16:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
水平差就差,一张嘴就知道,这种问题都处理不了,可以撞墙死了。

授人以渔,不授人以鱼。
2011-08-23 16:26
Robinson1988
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-8-23
收藏
得分:0 
2位大哥不要吵架
看一下这个需求
。。。。。03003200 09008001 ffff0000 00000000 00000000 00000000 00800000
我想直接读出 0300 该怎么读呢?
我定义了一个char[] 以每字节读取 但是 读出来03 变成3 , 00变成0 该怎么定义可以让读出的数据也是03,00
2011-08-23 16:29
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
回复 4楼 TonyDeng
无知者,无畏。

大尾数,小尾数都不知道,还tmd装x.

http://hi.baidu.com/yibobin/blog/item/b627a4383ca4972696ddd844.html

[ 本帖最后由 Devil_W 于 2011-8-23 16:56 编辑 ]
2011-08-23 16:53
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:3 
如果存储文件是二进制的话 以二进制的形式打开就是了

对于字符流好像不用考虑大小端吧 ,只有在2字节以上的类型中 比如 int等的存储读取才考虑吧

字节交换的话 可以用汇编的 swap指令

至于03 显示3 你是否将其值转化为字符串时 03 显示的是3? 这个的话在转化时 加上位数显示就可以了
比如 sprintf(buf,"%02x",0x03);
2011-08-23 17:32
Robinson1988
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-8-23
收藏
得分:0 
我日 你们2个有仇也帮忙解决问题了来嘛
2011-08-23 17:52
快速回复:C类型转换问题
数据加载中...
 
   



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

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