Penjelasan tentang File Biner: Cara Membuka & Menggunakannya

Daftar Isi

Binary file

Apa itu berkas biner?

File biner adalah file komputer yang berbeda dari file teks. File ini dapat berisi data, seperti program komputer, atau bisa juga berupa file yang menyimpan data untuk digunakan oleh suatu program. Secara umum, file biner merupakan kode mesin yang dikompilasi dari bahasa rakitan.

Bagaimana cara membuka berkas biner?

Ada beberapa cara berbeda untuk membuka berkas biner. Cara yang umum adalah dengan menggunakan Editor Biner: fungsi C++ atau Windows API.

1. Editor berkas .bin: Program C++

Untuk membuka berkas biner dengan C++, Anda perlu menggunakan kelas `ifstream`, yang merupakan bagian dari pustaka standar C++. Untuk menggunakan metode ini, Anda harus terlebih dahulu menyertakan berkas header `fstream`. Selanjutnya, Anda dapat membuka berkas biner dengan menggunakan fungsi anggota `ifstream::open()`, sambil memberikan nama atau jalur berkas sebagai parameter. Contohnya:

1.1 Buka berkas 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<char *>(buf), size);
infile.close();
}
				
			

1.2 Menyimpan Berkas Bin

				
					/// 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 Membaca Berkas 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<float *>(buf);

// write binFile
std::string saveFilePath= "./demo_saved.bin";
writeBin(saveFilePath, buf, size);

delete buf;
				
			

2. Fungsi API Windows CreateFile()

Cara lain untuk membuka berkas biner adalah dengan menggunakan fungsi API Windows CreateFile(). Fungsi ini merupakan bagian dari API Windows, yang tidak termasuk dalam pustaka standar C++. Namun, Anda dapat menggunakannya dalam program C++ Anda dengan menyertakan berkas header Windows.h. Fungsi CreateFile() menerima berbagai parameter, tetapi yang paling penting untuk membuka file biner adalah nama file atau jalurnya, akses yang diinginkan (misalnya, GENERIC_READ untuk membaca atau GENERIC_WRITE untuk menulis), dan mode berbagi (misalnya, FILE_SHARE_READ untuk mengizinkan proses lain membaca file tersebut saat proses Anda membukanya). Contohnya:

				
					#include Windows.h>

int main()
{
HANDLE file = CreateFile("example.bin", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
// ...
}
				
			

Kesalahan File Biner: "tidak dapat menjalankan file biner, kesalahan format eksekusi"

Kesalahan "tidak dapat menjalankan berkas biner: Kesalahan format eksekusi" biasanya muncul saat Anda mencoba menjalankan berkas biner yang tidak kompatibel dengan arsitektur sistem Anda. Berikut ini adalah contoh yang menunjukkan cara mengatasi masalah tersebut.

Berikut ini adalah kode program yang saya kompilasi menggunakan kompiler silang:

				
					#include <stdio.h>
void main()
{
   printf("hello arm");
}
				
			

Kompilasi di PC:

				
					# arm-linux-gnueabi-gcc -o main main.c
				
			

Pesan kesalahan saat dijalankan di PC:

				
					root@ubuntu:/home/jinxin/app# ./main
bash: ./main: cannot execute binary file: Exec format error
				
			

Komputer saat ini menggunakan arsitektur x86, sedangkan berkas biner yang baru saja dikompilasi berformat 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
				
			

Solusi untuk Kesalahan Format EXEC

Untuk mengatasi masalah ini, ada beberapa opsi yang bisa dilakukan:

Jalankan berkas biner pada perangkat berbasis ARM: Jika Anda memiliki akses ke perangkat berbasis ARM, Anda dapat menyalin berkas biner ke perangkat tersebut dan menjalankannya di sana.

Melakukan kompilasi silang kode untuk arsitektur x86: Anda dapat menggunakan kompiler silang x86 untuk mengompilasi kode tersebut untuk arsitektur x86. Untuk melakukannya, Anda perlu menginstal kompiler silang x86 di PC Anda dan mengompilasi kode tersebut dengannya.

Gunakan emulator: Anda dapat menggunakan emulator seperti QEMU untuk mensimulasikan perangkat berbasis ARM di PC berbasis x86 Anda dan menjalankan berkas biner di emulator tersebut.

Gunakan mesin virtual: Anda dapat menggunakan mesin virtual untuk mensimulasikan perangkat berbasis ARM di PC berbasis x86 Anda dan menjalankan berkas biner di mesin virtual tersebut.

Secara keseluruhan, solusi terbaik bergantung pada kasus penggunaan spesifik Anda dan sumber daya yang tersedia.

Berlangganan

Daftar ke milis kami untuk mendapatkan pembaruan blog bulanan, berita teknologi, dan studi kasus. Kami tidak akan pernah mengirimkan spam, dan Anda dapat berhenti berlangganan kapan saja.

Scroll to Top

Instant Quote