发新帖我要提问
12
返回列表
打印

如何将一个数组中的4个元素组成一个long型的数据

[复制链接]
楼主: huzhiyang
手机看帖
扫描二维码
随时随地手机跟帖
21
duguli| | 2012-9-4 15:58 | 只看该作者 回帖奖励 |倒序浏览
格式

使用特权

评论回复
22
yxwsz| | 2012-9-4 16:15 | 只看该作者
使用强制指针转换的时候需要考虑两个问题:
1 big endian/little endian的问题;
2 数据地址对齐问题  在ARM, MIPS上有对齐要求,32位访问,其地址必须是4的整倍数; 16位访问,其地址必须是2的整倍数;如果没有满足该要求,会出现数据对齐异常。

使用特权

评论回复
23
NICKY99| | 2012-9-4 17:20 | 只看该作者
学习了

使用特权

评论回复
24
原野之浪| | 2012-9-4 21:48 | 只看该作者
本帖最后由 原野之浪 于 2012-9-4 21:54 编辑

楼上有人提到用联合体

一般来讲用联合体是比较臭的做法,就类似与用goto的。
但并不是说用了不好,但大部分场合对大部分人来说是不适用的。

还有用域的,都是比较臭的做法。当然指针强制也好不到哪里去。
从稳定性和规范性来讲的话。

但是如果你的代码的这部分属于固定应用  那么goto啥的 说不准是锦上添花花 看起来更清晰呢

使用特权

评论回复
25
原野之浪| | 2012-9-4 21:50 | 只看该作者
我也觉得你的这种方法是最好的,开始我这样做的:
    tmp = a[0];
    tmp = (tmp
huzhiyang 发表于 2012-9-3 20:09

呵呵 你这方法很有创意啊

我移位一般这样吧

= A << 16 +  B << 8

使用特权

评论回复
26
原野之浪| | 2012-9-4 21:52 | 只看该作者
使用强制指针转换的时候需要考虑两个问题:
1 big endian/little endian的问题;
2 数据地址对齐问题  在ARM, MIPS上有对齐要求,32位访问,其地址必须是4的整倍数; 16位访问,其地址必须是2的整倍数;如果没有满足该 ...
yxwsz 发表于 2012-9-4 16:15

arm不对其能咋地? 哪天想起来 我试试看   关键是你没说清楚为什么异常。

多谢

使用特权

评论回复
27
yuanrumeng| | 2012-9-4 22:02 | 只看该作者
我表示理解,希望大家多多指教

使用特权

评论回复
28
znmcu| | 2012-9-4 23:24 | 只看该作者
不对齐,一些数据结构的尺寸将比你设想的要大。

使用特权

评论回复
29
Light_David| | 2012-9-5 00:16 | 只看该作者
:sleepy:这个问题谈来谈去,其实我认为还就是楼主的移位或的方法最实在,不依赖大小端的问题。
换平台啊,编译器啊 在数据传送,打印时才不容易出问题。

就算是对于追求完美的童鞋来说
  在代码执行效率这个方法也增加不了多少(编译器现在都是很智能的,说不定给你优化没了),平台也都跑得欢了,基本上可以忽略这一点。
相反,换平台,换编译器,甚至换电脑(编译器设定)编译结果都会不一样的代码才让人崩溃。

使用特权

评论回复
30
zhang7676050| | 2012-9-5 10:50 | 只看该作者
p=(char *)tmp;可以强制转化吗 ?貌似不行吧

使用特权

评论回复
31
znmcu| | 2012-9-5 11:21 | 只看该作者
可以,如果你真的需要绝对寻址

使用特权

评论回复
32
huzhiyang|  楼主 | 2012-9-6 11:07 | 只看该作者
这是我的znFAT中对大小端无关性的处理:

/***********************************************************************************
功能:由一个小端排列的字节序列,计算得到其在某一字符长度下所表达的整型值
  ...
znmcu 发表于 2012-9-4 15:25
非常感谢啊,我之前看振南视频的时候,讲到单片机驱动音频芯片时,用到了一个软件,能截取一段音频信号,并将其转换成数组,视频主讲人说是振南原创,可以去官网下载,我按照视频上提供的网址,却提示那个网址不存在了,那个软件很好的,不知道你这里有没有,可以共享一下啊……

使用特权

评论回复
33
3htech| | 2012-9-7 13:40 | 只看该作者
:sleepy:这个问题谈来谈去,其实我认为还就是楼主的移位或的方法最实在,不依赖大小端的问题。
换平台啊,编译器啊 在数据传送,打印时才不容易出问题。

就算是对于追求完美的童鞋来说
  在代码执行效率这个方法也 ...
Light_David 发表于 2012-9-5 00:16

双手赞成

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则