版块导航
正在加载中...
客户端APP下载
论文辅导
申博辅导
登录
注册
帖子
帖子
用户
本版
应《网络安全法》要求,自2017年10月1日起,未进行实名认证将不得使用互联网跟帖服务。为保障您的帐号能够正常使用,请尽快对帐号进行手机号验证,感谢您的理解与支持!
24小时热门版块排行榜
>
论坛更新日志
(4040)
>
虫友互识
(460)
>
文献求助
(454)
>
导师招生
(283)
>
硕博家园
(171)
>
休闲灌水
(110)
>
考博
(86)
>
论文投稿
(75)
>
博后之家
(72)
>
招聘信息布告栏
(64)
>
基金申请
(56)
>
教师之家
(50)
>
绿色求助(高悬赏)
(36)
>
公派出国
(34)
>
考研
(34)
>
论文道贺祈福
(31)
小木虫论坛-学术科研互动平台
»
计算模拟区
»
程序语言
»
Fortran
»
【求助】求助:帮忙看下这个程序是怎么转二进制的咯,谢谢啊
2
1/1
返回列表
查看: 621 | 回复: 1
只看楼主
@他人
存档
新回复提醒
(忽略)
收藏
在APP中查看
yhwsmile
金虫
(小有名气)
应助: 0
(幼儿园)
金币: 1053.8
帖子: 160
在线: 16.2小时
虫号: 620196
注册: 2008-10-08
性别: GG
专业: 大气环境与全球气候变化
[交流]
【求助】求助:帮忙看下这个程序是怎么转二进制的咯,谢谢啊
已有1人参与
麻烦各位帮忙看看,这是一个对数据进行简单加密后,对数据进行二进制转换,子程序write_hd就是转二进制,子程序xzen_ja是数据加密~~~~
fortran不能面向对象,我现在想把这个程序转成VB,现在我看不懂这个程序是怎么转二进制的,麻烦各位虫友帮忙看看~~~
图片1为station.txt
图片2为数据格式
CODE:
program data_conv
integer ns
integer,allocatable :: sta(:)
character t_r*3,cst*5
integer(kind=2) tm(367)
integer ln,ld,i_dim,ieof
character datdir*50,outdir*50,hisdir*50,logdir*50 !!!!资料目录,输出结果目录,阈值文件存储目录
!!!!!!!读取目录文件
open(10,file='config.txt',err=2050)
read(10,'(12x,i4)',err=2050)ns
read(10,'(12x,a50)',err=2050)datdir !二进制文件的存储路径
read(10,'(12x,a50)',err=2050)outdir
read(10,'(12x,a50)',err=2050)hisdir
read(10,'(12x,a50)',err=2050)logdir
close(10)
goto 90
2050 print*,'input the direct access is err, the run will stop'
stop 9999
90 continue
allocate(sta(ns))
t_r='ctm'
open(110,file='station.txt') !读文件名,只有站号。
do i=1,ns
read(110,*)sta(i)
enddo
close(110)
do ln=1,ns
write(cst,'(i5)')sta(ln)
tm=32766
open(20,file='e:\extr\原始资料\hisctm\'//t_r//cst//'.dat',err=999) !指示文本文件的路径
98 read(20,*,end=999)nsta,nya
read(20,'(30i6)',end=999)(tm(ld),ld=1,366)
ly=nya-1950
ieof=6915
call write_hd(t_r,sta(ln),ly,i_dim,tm,ieof,datdir)
goto 98
999 continue
close(20)
enddo !!!for do ln=1,ns
deallocate(sta)
end program data_conv
subroutine write_hd(t_r,ist,irecs,i_dim,b0,ieof,wysm)
parameter(nn=7) !!!!定义需要处理的变量数
integer(kind=2) b0(i_dim)
integer ieof,ist,irecs
character t_r*3,stat*5,ysm(nn)*3,ysf(nn)*7,wysm*50
data ysm/'crd','crr','ctm','ctn','ctd','crs','cci'/
data ysf/'hiscrd\','hiscrr\','hisctm\','hisctn\','hisctd\','hiscrs/','hiscci\'/
integer len1
!!!!!!!crd08-08时降水量,crr20-20时降水量,ctm20-20时最高气温,ctn20-20时最低气温,ctd20-20时平均气温
if(ieof/=6915)then
ieof=-99
print*,'您无权进行此操作,请联系管理员'
return
endif
if(i_dim/=367)then
ieof=-10
print*,'资料数组长度错误,i_dim= ',i_dim
return
endif
if(i_dim==367)then
!!!!!!!判断当前需要写入的变量
do k=1,nn
if(t_r==ysm(k))kk=k
enddo
do i=1,i_dim-1
ix0=b0(i)
!!!!!!!对当前写入数据做简单的变换
if(t_r(1:2)=='cr') call xzen_ja(ist,i+5,ix0)
if(t_r(1:2)=='ct') call xzen_ja(ist,i+10,ix0)
b0(i)=ix0
enddo
b0(i_dim)=irecs+1950 !!!!!!数组最后一个值赋为年
!!!!!!!写数据文件
write(stat,'(i5)')ist
close(8)
len1=len_trim(wysm)
open(8,file=wysm(1:len1)//ysf(kk)//ysf(kk)//stat//'.dat',access='direct',recl=2*i_dim,err=99)
write(8,rec=irecs,err=999)b0
close(8)
ieof=1
return
endif
99 ieof=0
print*,'打开文件错误',wysm(1:len1),ysf(kk),ysm(kk),stat,'.dat'
close(8)
return
999 ieof=-2
print*,'写入文件错误',wysm(1:len1),ysf(kk),ysm(kk),stat,'.dat'
close(8)
return
end subroutine write_hd
!!!!对输入的数值ix0做简单转换
subroutine xzen_ja(ist,i,ix0)
integer ist,i,ix0
integer maxx,mins
maxx=30000
mins=-9990
is3=mod(ist,3)
it3=mod(i,3)
it5=mod(i,5)
it7=mod(i,7)
it11=mod(i,11)
it13=mod(i,13)
it17=mod(i,17)
if(ix0
mins)then
if(is3==0)then
if(it3==0)ix0=ix0+it5+it17+it13
if(it3==1)ix0=ix0+it7+it17+it11
if(it3==2)ix0=ix0+it5+it11+it13
else
if(it3==0)ix0=ix0+it7+it11+it13
if(it3==1)ix0=ix0+it3+it13+it11
if(it3==2)ix0=ix0+it5+it11+it17
endif
else
ix0=ix0
endif
return
end subroutine xzen_ja
[
Last edited by nono2009 on 2010-11-11 at 07:26
]
回复此楼
» 猜你喜欢
心脉受损
已经有5人回复
博士读完未来一定会好吗
已经有15人回复
Springer期刊投稿求助
已经有4人回复
读博
已经有3人回复
小论文投稿
已经有3人回复
Bioresource Technology期刊,第一次返修的时候被退回好几次了
已经有9人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有8人回复
申请2026年博士
已经有6人回复
高级回复
1楼
2010-09-29 09:40:37
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
zyj8119
木虫
(著名写手)
应助: 65
(初中生)
贵宾: 0.003
金币: 915.1
散金: 1440
红花: 35
帖子: 2936
在线: 1329.4小时
虫号: 664177
注册: 2008-11-29
性别: GG
专业: 理论和计算化学
引用回帖:
Originally posted by
yhwsmile
at 2010-09-29 09:40:37:
麻烦各位帮忙看看,这是一个对数据进行简单加密后,对数据进行二进制转换,子程序write_hd就是转二进制,子程序xzen_ja是数据加密~~~~
fortran不能面向对象,我现在想把这个程序转成VB,现在我看不懂这个程序是 ...
逐项相除法求余???
赞
一下
回复此楼
高级回复
好好学习,天天向上。
2楼
2010-11-09 19:49:54
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
相关版块跳转
第一性原理
量子化学
计算模拟
分子模拟
仿真模拟
程序语言
我要订阅楼主
yhwsmile
的主题更新
2
1/1
返回列表
如果回帖内容含有宣传信息,请如实选中。否则帐号将被全论坛禁言
普通表情
龙
兔
虎
猫
高级回复
(可上传附件)
百度网盘
|
360云盘
|
千易网盘
|
华为网盘
在新窗口页面中打开自己喜欢的网盘网站,将文件上传后,然后将下载链接复制到帖子内容中就可以了。
信息提示
关闭
请填处理意见
关闭
确定