标签: binaryfiles

Java加载二进制文件

请告诉我最佳/快速的方法:

1)将非常小的二进制文件加载到内存中.例如图标;

2)加载/读取大小为512Mb +的非常大的二进制文件.也许我必须使用内存映射IO?

3)当你不想考虑大小/速度但是必须做的事情时你的共同选择:将所有字节读入内存?

谢谢!!!

PS对不起,也许是微不足道的问题.请不要关闭它;)

PS2.C#的模拟问题镜像 ;

java binaryfiles java-io

0
推荐指数
1
解决办法
8575
查看次数

PETSc中"ASCII"和"二进制"格式的区别

我想知道二进制格式和ASCII格式之间的区别.问题是我需要使用PETSc进行一些矩阵操作,我的所有矩阵都存储在文本文件中.

PETSc有不同的规则来处理这些格式.我不知道这些格式是什么,更不用说我的文本文件是什么格式了.

有没有办法将一种格式转换为另一种格式?

这是一个基本问题; 详细的答案将真正帮助我理解这一点.

ascii file-format binaryfiles petsc

0
推荐指数
1
解决办法
8803
查看次数

如何将response.binarywrite写入字符串

我将我的数据保存在我的数据库中作为Longblob并保存我正在将其转换为字节并保存现在,同时检索我们可以通过写如下数据

 Byte[] bytes = (Byte[])dt.Rows[0]["Data"];
                    Response.BinaryWrite(bytes);
Run Code Online (Sandbox Code Playgroud)

但我需要的是我需要以字节为单位的数据表示为字符串是否可能

c# asp.net binaryfiles

0
推荐指数
1
解决办法
1554
查看次数

使用write()复制二进制文件,复制文件的大小增加

#include<fstream.h>
#include<conio.h>
#include<alloc.h>

class profile
{
   public: char *copyBytes;
}p;

void main()
{
   unsigned int size;

   fstream file ("file.mp3", ios::binary | ios::in | ios::out);
   fstream copy ("copy.mp3", ios::binary | ios::in | ios::out);
   file.seekg(0, ios::end);
   size=file.tellg();
   file.seekg(0);

   while(!file.eof())
   {
    p.copyBytes=(char*)malloc(size);
    file.read((char*)p.copyBytes, size);
    copy.write((char*)p.copyBytes, size);
    free(p.copyBytes);
   }

   file.close();

}
Run Code Online (Sandbox Code Playgroud)

该程序制作二进制文件file.mp3的副本.原始二进制文件(file.mp3)为2.13 MB,复制的文件(copy.mp3)为2.14 MB.为什么?

c++ binaryfiles

0
推荐指数
1
解决办法
1027
查看次数

在C中读取二进制文件的奇怪之处

我在C中定义了这样的二进制文件

FILE *gfp;
gfp = fopen(gridfiles, "wb");
Run Code Online (Sandbox Code Playgroud)

变量gridfiles存储文件的名称,并且已在前面定义过.现在我在文件中写出两个变量.

for(yy = 0; yy < nfiley; yy++) {
   for(xx = 0; xx < nfilex; xx++) {
      filebx = beguv + xx*1E3;
      fileby = enduv - yy*1E3;
      fwrite(&filebx, sizeof(filebx), 1, gfp);
      fwrite(&fileby, sizeof(fileby), 1, gfp);
   }
}
Run Code Online (Sandbox Code Playgroud)

如果这个代码后面

fseek(gfp, 0, SEEK_SET);
fread(&filebx, sizeof(filebx), 1, gfp);
fread(&fileby, sizeof(fileby), 1, gfp);
fprintf(stderr, "%f %f", filebx, fileby);
Run Code Online (Sandbox Code Playgroud)

我的输出是

1000 15000
Run Code Online (Sandbox Code Playgroud)

对于前两个,这是预期的.

但如果经过一些其他的代码(根本不涉及这些文件)我重复fseek()等,我的输出是

14000 14000
Run Code Online (Sandbox Code Playgroud)

不管我做什么.我一直试图弄清楚这一段时间......任何人都知道我做错了什么?

c file-io pointers binaryfiles file-pointer

0
推荐指数
1
解决办法
165
查看次数

发出写入/读取uint到二进制文件的问题

我正在用C语言写一个二进制文件的结构.char*项和uint8项写得很好,但我似乎在编写uint32项时遇到问题.

我的写作代码在这里.

void writeOut(record *data){

FILE *fp = fopen("output.bin","w");

int i =0;

    while(data[i].Name != NULL){
        fwrite(data[i].Name, NAME_LEN ,1,fp);   
        fwrite(&data[i].Value1, sizeof(uint8_t) ,1,fp);
        fwrite(&data[i].Value2, sizeof(uint8_t) ,1,fp);
        fwrite(&data[i].Id, sizeof(uint32_t) ,1,fp);
        fwrite(data[i].Text, TEXT_LEN ,1,fp);   
        i++;
    }   
}
Run Code Online (Sandbox Code Playgroud)

我的二进制文件对于记录1(十六进制)看起来像这样(用'|'用于显示字段结尾指向): 52 6F 64 27 72 6F 64 00 00 00 00 00 00 00 00 00 00 | 01 | 04 | 72 92 01 00 | 50 72 6F 6A 65 63 74 20 50 65 61 63 65 00 00 00 00 00 00 …

c binaryfiles uint

0
推荐指数
1
解决办法
1125
查看次数

如何通过使用DataInputStream类指定偏移量和字节长度来将字节读入数组?

我声明并分配一些字节数组.我想用read(字节数组,偏移量,字节长度)方法初始化这些数组.第一个读取方法语句似乎正确地将前32个字节读入数组.但是,第二个读取方法不会抛出indexOutOfBounds异常.

偏移值的规范:

offset 0, length 32 bytes - contains some text
offset 32, length 2 bytes - contains something else
etc
Run Code Online (Sandbox Code Playgroud)

这是代码:

File file = new File("somebinaryfile.dat");
DataInputStream in = new DataInputStream(new FileInputStream(file));

byte[] array1 = new byte[32];   // first array 
byte[] array2 = new byte[2];    // second array

in.read(array1, 0, 32);
in.read(array2, 32, 2);

in.close();
Run Code Online (Sandbox Code Playgroud)

我正在假设(可能不正确)在每个新的.read()方法语句中读取位置将自动增加.然而,如果我将34个元素分配给array2而不是仅仅2个元素,则不会抛出任何异常.因此,看起来前34个字节被读入array2而不是最后2个字节,即使我指定了偏移和字节长度......

我意识到RandomAccessFile类有一个漂亮的.seek(n)方法.但是,我很顽固,并希望坚持使用DataInputStream.

关于正确使用的任何建议,以便使用指定的偏移量和字节长度获得的数据初始化两个数组?

java io binaryfiles

0
推荐指数
1
解决办法
4305
查看次数

如何只将16位分配给二进制文件中的任何整数而不是C++中的普通32位?

我有一个使用LZW算法创建压缩文件并使用哈希表的程序.我的压缩文件当前包含与哈希表索引相对应的整数.此压缩文件中的最大整数约为46000,可以很容易地用16位表示.现在,当我使用以下代码将此"compressedfile.txt"转换为二进制文件"binary.bin"(以进一步减小文件大小)时,我在"binary.bin"文件中获得32位整数.例如,如果我的压缩文件中有一个数字84,它将在我的二进制文件中转换为5400 0000.

std::ifstream in("compressedfile.txt");
std::ofstream out("binary.bin", ios::out | std::ios::binary);

int d;
while(in >> d)
{out.write((char*)&d, 4);}
Run Code Online (Sandbox Code Playgroud)

我的问题是我不能丢弃'5400 0000'中的结尾'0000',它在我的文件中占用了额外的2个字节.这是每个整数的情况,因为我的最大整数是46000,只能使用2个字节来表示.是否有任何代码可以设置我的二进制文件的基础?我希望我的问题很明确.

c++ binaryfiles lzw

0
推荐指数
1
解决办法
136
查看次数

从std :: istream读取时,是否有比reinterpret_cast <char*>更好的选项?

我有以下代码:

std::istream is;
// ... stream initialization ... 
while(is)
{
  uint32_t next4Bytes = 0;
  is.read(reinterpret_cast<char*>(&next4Bytes), 4);
  if(next4Bytes == 218893066)
  {
    is.seekg(-4, std::ios_base::cur);
    break;
  }
  else
    is.seekg(-3, std::ios_base::cur);
}
Run Code Online (Sandbox Code Playgroud)

有没有比reinterpret_cast<char*>从4个字节读std::istream入更好的方法uint32_t?(显然不是c式演员)

c++ binaryfiles istream readfile

0
推荐指数
2
解决办法
269
查看次数

将状态存储在golang二进制文件中

我正在为客户端开发本地解决方案,而无需在计算机上进行任何控制和互联网连接。

该解决方案将根据已购买许可证的允许请求(REST API调用)数量获利。因此,当前我们将请求计数存储在文件系统本身的加密文件中。但是此解决方案并不完美,因为可以将文件复制到某个位置,然后在请求配额结束后将其替换。同样,如果文件被删除,则需要支持人员的手动干预。

我正在寻找一种以二进制形式存储状态/数据并更新运行时的解决方案(考虑使用二进制本身更新的使用计数)

寻找更好的方法。

同样二进制应该从先前的存储状态开始

有办法吗?

PS:我知道写二进制文件不会解决问题,但是我认为,通过增加状态存储位置的排列和组合的数量,这将增加难度,并且由于不常见的知识是可以更改可执行文件,如果有人试图弄乱系统,它将是查找状态的最后一个位置(安全性由默默无闻)

binaryfiles go binarywriter

0
推荐指数
1
解决办法
72
查看次数

标签 统计

binaryfiles ×10

c++ ×3

c ×2

java ×2

ascii ×1

asp.net ×1

binarywriter ×1

c# ×1

file-format ×1

file-io ×1

file-pointer ×1

go ×1

io ×1

istream ×1

java-io ×1

lzw ×1

petsc ×1

pointers ×1

readfile ×1

uint ×1