首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Perl:在文件中高效地存储/获取约束整数的2D数组

Perl:在文件中高效地存储/获取约束整数的2D数组
EN

Stack Overflow用户
提问于 2014-08-26 18:53:10
回答 1查看 87关注 0票数 2

这是一次通过更彻底地解释我想做什么来改进我的Perl: seek to and read bits, not bytes的尝试。

我有x,一个9136x42个整数数组,我想把它高效地存储在一个文件中。整数具有以下约束:

  • X0.9135中的所有9136个整数都在-137438953472到137438953471之间,因此可以使用38位存储。
  • X0.9135中的所有9136个整数都在-16777216到16777215之间,因此可以使用25位存储。
  • 等等..。(整数位约束是预先知道的;Perl不必计算它们)

问题:使用Perl,我如何有效地将这个数组存储在一个文件中?

备注:

  • 如果一个整数可以存储在25位,它也可以存储在4字节(32位),如果你愿意浪费7位。然而,在我的情况下,每一点都很重要。
  • 我希望使用file find ()快速查找数据,而不是按顺序读取文件。
  • 该数组通常以xi的身份访问。换句话说,我需要与给定的xi对应的42个整数,因此这42个整数应该彼此靠近存储(理想情况下,它们应该在文件中彼此相邻地存储)
  • 我最初的方法是先设置一个比特流,然后找到一种方法将其读回并将其转换为整数。我最初的问题集中在这一点上,但也许有一个更好的解决方案,更大的问题,我没有看到。

关于我在做什么的细节太多了:

EN

回答 1

Stack Overflow用户

发布于 2014-08-27 13:55:39

我不确定我是否应该鼓励你,但是它就像Data::BitStream会按照你的要求去做。

下面的程序将一个38位值和一个25位值写入一个文件,然后打开并完整地检索这些值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/perl

use strict;
use warnings;

use Data::BitStream;

{
   my $bs_out = Data::BitStream->new(
      mode => 'w',
      file => 'bits.dat',
   );

   printf "Maximum %d bits per word\n", $bs_out->maxbits;

   $bs_out->write(38, 137438953471);
   $bs_out->write(25, 16777215);

   printf "Total %d bits written\n\n", $bs_out->len;
}

{
   my $bs_in = Data::BitStream->new(
      mode => 'ro',
      file => 'bits.dat',
   );

   printf "Total %d bits read\n\n", $bs_in->len;
   print "Data:\n";

   print $bs_in->read(38), "\n";
   print $bs_in->read(25), "\n";
}

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Maximum 64 bits per word
Total 63 bits written

File size 11 bytes
Total 63 bits read

Data:
137438953471
16777215

38和25是所写的63位数据,模块确认了这一点。但是显然还有一些额外的管理数据,因为结果文件的总大小是11个字节,而不仅仅是最少需要的8个字节。注意,当重新打开时,数据会记住它有63位长。但是,它比一个文件包含两个简单的64位整数所需的16个字节要短。

如何处理这些信息取决于您自己,但请记住,以这种方式打包的数据将很难用十六进制编辑器进行调试。如果你收养这样的东西,你可能会开枪打中自己的脚。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25518204

复制
相关文章
在 Cocos Creator 中优雅且高效地管理弹窗
弹窗对于我们来说应该一点都不陌生,无论是在网页上,APP 上还是在游戏中都非常的常见。
陈皮皮
2020/11/05
2.1K0
MySQL中的约束和存储引擎
在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。 常见的约束有哪些呢?
共饮一杯无
2022/11/28
2K0
MySQL中的约束和存储引擎
整数、浮点数在计算机中的存储
  计算机要处理的信息是多种多样的,如数字、文字、符号、图形、音频、视频等,这些信息在人们的眼里是不同的。但对于计算机来说,它们在内存中都是一样的,都是以二进制的形式来表示。要想学习编程,就必须了解二进制,它是计算机处理数据的基础。
mukekeheart
2019/09/29
1.8K0
整数、浮点数在计算机中的存储
perl文件句柄_perl文件句柄信号引用
大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。 Jetbrains全系列IDE稳定放心使用
全栈程序员站长
2022/11/02
1.9K0
在pandas中利用hdf5高效存储数据
HDF5(Hierarchical Data Formal)是用于存储大规模数值数据的较为理想的存储格式。
朱卫军 AI Python
2022/04/03
2.9K0
在pandas中利用hdf5高效存储数据
手把手教你如何高效地在 MMCV 中贡献算子
不知道大家在使用 MMCV 的过程中有没有遇到这种情况:MMCV 没有提供自己需要的 CPU/CUDA 算子,于是希望提一个 PR(Pull Request),将这个算子加入 MMCV,但是又不知从何处下手。本文以最简单的 TensorAdd 算子为例,向大家展示为 MMCV 贡献算子的全过程,希望能够帮助大家更好地理解 MMCV 算子的
OpenMMLab 官方账号
2022/02/28
7460
手把手教你如何高效地在 MMCV 中贡献算子
在pandas中利用hdf5高效存储数据
HDF5(Hierarchical Data Formal)是用于存储大规模数值数据的较为理想的存储格式。
bugsuse
2020/10/09
5.5K0
在pandas中利用hdf5高效存储数据
在Java中如何高效判断数组中是否包含某个元素
原文地址:http://www.hollischuang.com/archives/1269
Java后端技术
2018/08/09
5.2K0
Perl 文件操作
perl 语法的变态在下面的代码中体现更甚,一条没头没尾的正则,不知道的还以为是语法错误,实际它是可以正常执行的。
我与梦想有个约会
2023/10/21
1830
在Django中接收文件并存储
这是一个简单的接收客户端上传的头像文件并保存的例子,应该看过这个就已经大体会使用接收文件了
py3study
2020/01/21
2.8K0
[Java] 在Java中优雅地进行文件IO操作
我们知道C语言中用fopen函数打开一个文件流进行读写操作,C++的fstream提供了ofstream, ifstream, fstream来处理面向流的输入和输出,Python中则更为简单,你可以用with上下文配合open打开一个File对象来进行文件的读写。
泰坦HW
2020/07/22
1.4K0
[Java] 在Java中优雅地进行文件IO操作
教你几招在 Linux 中高效地查找目录
在 Linux 操作系统中,查找目录是一项常见的任务。无论是系统管理员还是普通用户,都可能需要查找特定的目录以执行各种操作,如导航文件系统、备份数据、删除文件等。Linux 提供了多种命令和工具来帮助我们在文件系统中快速找到目标目录。本文将介绍几种常用的方法和命令,帮助你在 Linux 中高效地查找目录。
网络技术联盟站
2023/08/03
10.6K0
教你几招在 Linux 中高效地查找目录
如何让CNN高效地在移动端运行
COMPRESSION OF DEEP CONVOLUTIONAL NEURAL NETWORKS FOR FAST AND LOW POWER MOBILE APPLICATIONS【ICLR 2016】
SIGAI学习与实践平台
2019/03/11
1.1K0
如何让CNN高效地在移动端运行
udev高效、动态地管理 Linux 设备文件
描述: Linux 用户常常会很难鉴别同一类型的设备名,比如 eth0, eth1, sda, sdb 等等。通过观察这些设备的内核设备名称,用户通常能知道这些是什么类型的设备,但是不知道哪一个设备是他们想要的
全栈工程师修炼指南
2022/09/28
8.1K0
udev高效、动态地管理 Linux 设备文件
约束文件
对大小写敏感
瓜大三哥
2018/02/24
6530
约束文件
Perl_文件读写操作
my $line=<IN>; # <> 钻石符
生信补给站
2020/08/06
2.9K0
在ASP.NET中获取文件属性
www.chinacs.net  2001-8-13  中文C#技术站在ASP.NET中获取文件属C#
Java架构师必看
2021/03/22
2.9K0
06 _使用命令在hadoop的HDFS中存储文件
1 对master上的hadoop/etc/hadoop下的hdfs-site.xml做如下配置
全栈程序员站长
2021/08/23
2.7K0
一个可以更好地调试的 Perl 模块
仅用于调试或开发调整时的 Perl 代码块有时会很有用。这很好,但是这样的代码块可能会对性能产生很大的影响, 尤其是在运行时才决定是否执行它。
用户8639654
2021/10/14
5450
场景几何约束在视觉定位中的探索
视觉定位是自动驾驶和移动机器人领域的核心技术之一,旨在估计移动平台当前的全局位姿,为环境感知和路径规划等其他环节提供参考和指导。美团无人配送团队长期在该方面进行深入探索,积累了大量创新性工作。不久前,视觉定位组提出的融合3D场景几何信息的视觉定位算法被ICRA2020收录,本文将对该方法进行介绍。ICRA的全称是IEEE机器人与自动化国际会议(International Conference on Robotics and Automation),是机器人领域一年一度的顶级会议之一。
美团无人配送
2020/06/03
2K0

相似问题

在Ruby中高效地存储/压缩整数数组?

42

递增存储在文件中的整数: Perl

34

在Java中高效地存储数组列表

22

将图像高效地存储在XML文件中

24

Java:整数数组的内存高效存储

35
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文