回 帖 发 新 帖 刷新版面

主题:字节相加的问题请教

各位高手,我新学fortran,有个问题请教,比如定义了a为real*4,并赋值a=3.1415926,其实a就是4个字节的数,用什么方法能把这四个字节相加成一个字节?

比如我把a输出为二进制文件,用ue打开,比如内容为1b 2c 。。。。,头两个字节相加的结果为0xb1+0xc2=0x73。

我就是想不明白怎么把实行变成1b 2c ?采用类型转换么?盼答

回复列表 (共8个回复)

沙发

楼主是想对数据加密吗?

板凳

不是想加密,只是累加后得到一个字节的校验码。目前实现了,就是把a先存到二进制文件中,然后用一个字节的数组读进来,进行累加即可。

但是累加后得到十进制的-104,如何转换为十六进制数?

3 楼

没有做过这与的工作, 转换函数也没有印象有. 不过把浮点数做成校验码似乎会很不可靠吧. 不同编译器不同系统不同优化下算出来的浮点数都可能会有一点点的出入.

4 楼

楼主你那样太麻烦了。

有个简单的办法:

Program Main
  Implicit None
  character(Len=1) a(4)
  real*4 b
  integer c
  EQUIVALENCE( a , b )
  b = 3.1415926
  c = sum( ichar(a) )
  write(*,*) c
End Program Main

5 楼

看来EQUIVALENCE还是有用武之地的.

6 楼

[quote]看来EQUIVALENCE还是有用武之地的.[/quote]

呵呵,巧妙应用还是有好处的,但不推荐这样,应为比较难读懂。

另外,我们专业上有一种数据。前30个字节是数据头,后面是4个字节一个数据。

这样我们读取的时候 RECL 就不好确认,因为 30 不能被 4 整除。

这种情况下,我就喜欢用 EQUIVALENCE 来读,也挺方便。

7 楼

受教了!
对字节操作fortran确实没有C方便.

8 楼



At this [url=http://www.ccqdiy.com]重庆团购[/url] maximal rate of hate decay, the time taken for the warrior's threat to decay to 90% of the original value would be 26.5 hours. In fact, if a warrior logged in [url=http://www.mmopowerlevel.net/powerlist.php?fid=688]buy wow item[/url] as soon as the server came online after the weekly reset and hit a mob, his threat would not decay to 50% before the server reset next week. I think this is [url=http://www.mmopowerlevel.net/powerlist.php?fid=688]buy wow gear[/url] enough to rule out threat decay. 
5) Threat values for some warrior abilities Updated Jan 20 
The following list is not exhaustive, but [url=http://www.ccqdiy.com]重庆二手交易[/url] includes all the major tanking abilities. 
Note: the following values [url=http://www.ccqdiy.com]重庆二手手机[/url] are given in raw terms. In reality the warrior must have either a 1.3 or 0.8 or 1.45 modifier on these, depending on his stance and talents. 
Note: * All abilities do not include threat generated by their damage. This [url=http://www.ccqdiy.com]重庆二手电脑[/url] will be discussed more later. 

我来回复

您尚未登录,请登录后再回复。点此登录或注册