#include#include using namespace std; // An unsigned char can store 1 Bytes (8bits) of data (0-255) typedef unsigned char BYTE; // Get the size of a file long getFileSize(FILE *file) { long lCurPos, lEndPos; lCurPos = ftell(file); fseek(file, 0, 2); lEndPos = ftell(file); fseek(file, lCurPos, 0); return lEndPos; } int main() { const char *filePath = "C:\\Users\\UrName\\Desktop\\testFile.bin"; BYTE *fileBuf; // Pointer to our buffered data FILE *file = NULL; // File pointer // Open the file in binary mode using the "rb" format string // This also checks if the file exists and/or can be opened for reading correctly if ((file = fopen(filePath, "rb")) == NULL) cout << "Could not open specified file" << endl; else cout << "File opened successfully" << endl; // Get the size of the file in bytes long fileSize = getFileSize(file); // Allocate space in the buffer for the whole file fileBuf = new BYTE[fileSize]; // Read the file in to the buffer fread(fileBuf, fileSize, 1, file); // Now that we have the entire file buffered, we can take a look at some binary infomation // Lets take a look in hexadecimal for (int i = 0; i < 100; i++) printf("%X ", fileBuf[i]); cin.get(); delete[]fileBuf; fclose(file); // Almost forgot this return 0; }
Code Snippets
Sunday 12 September 2010
Understand and reading binary files in C
I posted this tutorial quite a while back on dreamincode.net, here, so i won't repost it, no point, but i will post the code snippet that i provided with the tutorial. It is mainly targetted and those who wish to read in the binary information contained within a file, for use in emulation for example, and to teach the difference between text files and binary files.
Thursday 9 September 2010
Nice and simple Binary to Decimal algorithm.
Little function for converting binary to decimal, as their seems to be a lack of these code snippets. here we go, enjoy.
#include/* This function takes a binary string and returns the decimal equivalent using the Positional notation method. */ __int64 binToDec(char *binStr) { __int64 pow = 1, dec = 0; for (int i = strlen(binStr)-1; i >= 0; i--) { dec += (binStr[i] == '1') ? pow : 0; pow *= 2; } return dec; } int main() { std::cout << binToDec("1010"); std::cin.get(); return 0; }
Tuesday 7 September 2010
Get CPU speed
This is some code that I "borrowed" from the PCSX2 source code and created a small program out of it, the PCSX2 source code is GNU so I don't think this is a problem. This code works nicely but will probably only compile in Visual C++, as the "__rdtsc()" function is microsoft specific.
Sorry about the way the HTML interprets the include directives as code tags and terminates them at the end of the code by the way... can't be helped
Sorry about the way the HTML interprets the include directives as code tags and terminates them at the end of the code by the way... can't be helped
#include#include // Link the library we need for the timeGetTime() function #pragma comment (lib, "WINMM.LIB") __int64 getCPUSpeed(unsigned int time) { __int64 timeStart, timeStop; __int64 startTick, endTick; __int64 overhead; overhead = __rdtsc() - __rdtsc(); timeStart = timeGetTime(); while(timeGetTime() == timeStart) { timeStart = timeGetTime(); } for(;;) { timeStop = timeGetTime(); if ((timeStop - timeStart) > 1) { startTick = __rdtsc(); break; } } timeStart = timeStop; for(;;) { timeStop = timeGetTime(); if ((timeStop - timeStart) > time) { endTick = __rdtsc(); break; } } return (__int64)((endTick - startTick) + (overhead)); } int main() { char *cpuSpeed = (char*)malloc(24); sprintf(cpuSpeed, "%d", getCPUSpeed(1000) / 1000000); // Get CPU speed printf("CPU Speed: %c.%c%c%cGhz", cpuSpeed[0], cpuSpeed[1], cpuSpeed[2], cpuSpeed[3]); getchar(); return 0; }
Welcome to my code snippets blog
This will be a blog for posting random code snippets and maybe some tutorials too. I just got the syntax highlighter working on Blogger, but sorry about the code formatting, it only seems to indent the code by 1 space, which is kinda annoying, but oh well.
Syntax Highlighter test
Syntax Highlighter test
while (!Dead()) { PostCodeSnippet(); if (codeSnippetIsUseless) FeelBadMan(); else FeelGoodMan(); }
Subscribe to:
Posts (Atom)