最近学习Elixir,想写个小程序练习练习。

以前研究过MARC(机读目录格式),主要用于存储图书信息的一种数据格式,每个MARC条目有24个字节的头标区,然后是目次区,目次区存储图书信息的各个字段名称及长度和地址信息,现在写个小程序用来读取目次区的数据。

目次区的数据格式:

字段名(3个字节)+字段长度(4个字节)+数据地址(5个字节)

字段名(3个字节)+字段长度(4个字节)+数据地址(5个字节)

字段名(3个字节)+字段长度(4个字节)+数据地址(5个字节)

......

读取过程:

1、打开文件

2、读取一条MARC数据

3、跳过头标区(24个字节)

4、读取12个字节,解析字段信息

5、判断目次区是否结束,如果没有结束重新执行第4步

6、判断文件是否结束,如果没有结束重新执行第2步

根据目次区的数据格式,解析过程如下:

     # 字段名称 3个字符<<field_name::binary-size(3), other_data::binary>> = data# 字段长度 4个字符<<field_length::binary-size(4), other_data::binary>> = other_data# 字段内容地址<<field_offset::binary-size(5), other_data::binary>> = other_dataIO.puts "字段名:#{field_name}   字段长度:#{field_length}   地址:#{field_offset}"

完整的方法:

 # 读取字段结束 0x1e为目次区结束标志def read_field(<<0x1e, _::binary>>) doIO.puts "--------------------------------------------------------"end# 解析字段信息def read_field(data) do# 字段名称 3个字符<<field_name::binary-size(3), other_data::binary>> = data# 字段长度 4个字符<<field_length::binary-size(4), other_data::binary>> = other_data# 字段内容地址<<field_offset::binary-size(5), other_data::binary>> = other_dataIO.puts "字段名:#{field_name}   字段长度:#{field_length}   地址:#{field_offset}"# 解析下一个字段read_field(other_data) end

elixir 读取 marc条目 目次区字段信相关推荐

  1. XLSReadWriteII 读取EXCEL数据 动态响应字段的列编号

    XLSReadWriteII 读取EXCEL数据 动态响应字段的列编号 我们在通过XLSReadWriteII读取EXCEL表中的数据时,往往通过EXCEL中二个列,对应数据库中的指定字段,通过索引& ...

  2. python语言可以处理数据文件吗_Python语言读取Marc后处理文件基础知识.pdf

    Python语言读取Marc后处理文件基础知识 基于 python 的焊接后处理 知识要点:  Python 语言  Python 模块功能  PyPost 后处理模块  PyPost 模块函 ...

  3. arcpy读取featureClass中某一字段的所有属性值,存放到list中(地理国情监测)

    arcpy读取featureClass中某一字段的所有属性值,存放到list中:(地理国情监测) import arcpy shppath = r"F:\\IndexData.shp&quo ...

  4. KETTLE 读取文本信息添加时间字段

    转换: https://blog.csdn.net/care_about_people/article/details/44960193 KETTLE 读取文本信息添加时间字段:  https://b ...

  5. Java读取MARC元数据 代码

    需要对MARC元数据的转换有一点了解,这个自行百度了解. 可以参考: https://blog.csdn.net/chaishen10000/article/details/79245055 http ...

  6. 读取数据库信息构建视图字段的备注信息,方便程序代码生成

    在很多情况下,我们开发都需要有一个快速的代码生成工具用来提高开发效率,代码生成工具很多信息都是读取数据库的表.视图等元数据进行对象表信息的完善,有了这些信息,我们就可以在普通的实体类代码里面添加属性字 ...

  7. android 自动读取短息,Android实现短信验证码自动拦截读取功能

    本文实例为大家分享了Android短信验证码自动拦截读取 的具体代码,供大家参考,具体内容如下 知识准备: 1.观察者模式的理解[文章稍后来到~~] 2.Android的Cursor使用[Androi ...

  8. 基于HTTP协议用JAVA实现读取天气预报和twilio发送短信(无需审核)

    文章目录 一.读取指定城市的天气预报 二.twilio平台java编程实现发送短信 三.总结 四.参考 一.读取指定城市的天气预报 代码如下: package network;import java. ...

  9. python读取access_Python 获取 Access 表字段名!

    时效说明:walker 的旧文迁移,某些地方可能过时,最后更新时间为 2015-09-25 以下所有代码 Python2.7.Python3.4 均可用. Python资源共享群:484031800 ...

最新文章

  1. Logback学习笔记1
  2. springboot:SpringBoot项目启动成功,但无法访问且提示404
  3. 005_Spring Data JPA条件查询
  4. 26.Android Studio下Ndk开发(ffmpeg导入Android studio以cmake方式编译的过程)
  5. Hbase总结(三)-Hbase与Hive的区别与联系
  6. 小白 LeetCode 5605 检查两个字符串数据是否相等
  7. java中result方法_java.sql.resultSet接口中有很多方法的实现
  8. HDU6608 Fansblog【Miller_Rabin素性测试算法+威尔逊定理】
  9. vSphere 5.5 App HA学习-1、App HA概述
  10. 外螺纹对照表_螺纹螺距对照表
  11. QCC3040---battery module
  12. 机房收费系统——项目开发计划书
  13. html5shiv.js分析-读源码之javascript系列
  14. WPS实现公式居中同时编号对齐
  15. Windows 11 22H2 (2022 年更新) 发布,简体中文版、英文版下载
  16. 计算机一级降序和升序,按时间降序排序
  17. java布道师_JavaWeb主管布道师
  18. 第十五周作业——ZJM与纸条
  19. 什么软件可以支持图片转语音?
  20. 【Photoshop 教程系列第 2 篇】如何将 PS 中字体单位由点改为像素

热门文章

  1. bugku ctf 听首音乐 wirteup
  2. javascript 异步编程二(转载 from 司徒正美)
  3. SolidWorks的二次开发有关的自定义函数
  4. 如何修复SSD硬盘,如何给SanDisk SSD开卡
  5. ❤️数据可视化❤️:基于Echarts + GeoJson实现的地图视觉映射散点(气泡)组件【4】 - 广东省
  6. 《微信小程序》 开源项目
  7. 服务器2003光盘修复,将Windows安装到光盘上 修复系统故障简单轻松
  8. 成功男人背后的女人——马云漂亮老婆张瑛简介及珍贵照片曝光
  9. JAVA异常:java.lang.AbstractMethodError: ...tomcat.websocket.server.WsSessionListener.sessionCreated
  10. haproxy stats enable功能详解