Como abrir um arquivo binário?
Existem várias maneiras diferentes de abrir um arquivo binário. A maneira mais comum é usar o Editor Binário: C++ ou função API do Windows.
1. Editor de arquivos bin: Programa C++
Para abrir um arquivo binário com C++, você precisa usar a classe ifstream, que faz parte da biblioteca padrão do C++. Para usar esse método, primeiro você precisa incluir o arquivo de cabeçalho fstream. Em seguida, você pode abrir um arquivo binário usando a função membro ifstream::open(), passando o nome ou caminho do arquivo como parâmetro. Por exemplo:
1.1 Abrir arquivo bin
/// C++ open bin file
void getBinSize(std::string path)
{
int size = 0;
std::ifstream infile(path, std::ifstream::binary);
infile.seekg(0, infile.end);
int size= infile.tellg();
infile.seekg(0, infile.beg);
infile.close();
printf("\npath=%s,size=%d \n", path, size);
return size;
}
void readBin(std::string path, char *buf, int size)
{
std::ifstream infile(path, std::ifstream::binary);
infile.read(static_cast(buf), size);
infile.close();
}
1.2 Salvando o arquivo da lixeira
/// C++ save bin file
void writeBin ( std::string path , char * buf , int size )
{ std::ofstream outfile ( path , std::ifstream::binary );
outfile.write((char *)(buf), size);
outfile.close();
}
1.3 Leitura do arquivo Bin
// read binFile
std::string filePath= "./demo.bin";
int size = GetBinSize(filePath);
char *buf= new char[size];
readBin(filePath, buf, size);
float *fbuf = reinterpret_cast(buf);
// write binFile
std::string saveFilePath= "./demo_saved.bin";
writeBin(saveFilePath, buf, size);
delete buf;
2. Função CreateFile() da API do Windows
Outra maneira de abrir um arquivo binário é usar a função CreateFile() da API do Windows. Essa função faz parte da API do Windows, que não faz parte da biblioteca padrão do C++. No entanto, você pode usá-la em seus programas C++ incluindo o arquivo de cabeçalho Windows.h. A função CreateFile() aceita vários parâmetros, mas os mais importantes para abrir um arquivo binário são o nome ou caminho do arquivo, o acesso desejado (por exemplo, GENERIC_READ para leitura ou GENERIC_WRITE para gravação) e o modo de compartilhamento (por exemplo, FILE_SHARE_READ para permitir que outros processos leiam o arquivo enquanto o seu processo o mantém aberto). Por exemplo:
#include Windows.h>
int main()
{
HANDLE file = CreateFile("example.bin", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
// ...
}
Erro de arquivo binário: "não é possível executar o arquivo binário, erro de formato exec"
O erro "não é possível executar o arquivo binário: erro de formato Exec" geralmente ocorre quando você tenta executar um arquivo binário que não é compatível com a arquitetura do seu sistema. Aqui está um caso para mostrar como resolver esse problema.
O seguinte é o código do programa que compilei com um compilador cruzado:
#include
void main()
{
printf("hello arm");
}
Compilar no PC:
# arm-linux-gnueabi-gcc -o main main.c
Mensagem de erro ao executar no PC:
root@ubuntu:/home/jinxin/app# ./main
bash: ./main: cannot execute binary file: Exec format error
O PC atual tem arquitetura x86, e o arquivo binário recém-compilado está no formato arm:
root@ubuntu:/home/jinxin/app# file main
root@ubuntu:/home/jinxin/app# file main
main: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ec9b455a1c1df94060c7364d0efc42975207fca9, not stripped
Solução para o erro de formato EXEC
Para resolver esse problema, temos algumas opções:
Executar o arquivo binário em um dispositivo baseado em ARM: Se você tiver acesso a um dispositivo baseado em ARM, poderá copiar o arquivo binário para esse dispositivo e executá-lo lá.
Compile o código para a arquitetura x86: você pode usar um compilador cruzado x86 para compilar o código para a arquitetura x86. Para fazer isso, você precisa instalar um compilador cruzado x86 no seu PC e compilar o código com ele.
Use um emulador: você pode usar um emulador como o QEMU para emular um dispositivo baseado em ARM no seu PC baseado em x86 e executar o arquivo binário no emulador.
Use uma máquina virtual: você pode usar uma máquina virtual para emular um dispositivo baseado em ARM no seu PC baseado em x86 e executar o arquivo binário na máquina virtual.
No geral, a melhor solução depende do seu caso de uso específico e dos recursos disponíveis.




