C++ :: Binary IO - Read 4 Byte Int From A File
Feb 26, 2012
Trying to write very simple code to read a 4 byte int from a file.
code:
int tester;
FILE *fp;
fp=fopen("/home/bdluser/skeleton.blx","rb");
fread(&tester,sizeof(int),1,fp);
printf("tested 1 byte read should be 1: %i",tester);
I have tried editing the binary file....it outputs similar large numbers
00000000000000000000000000000001 outputs 808464432
0x00000001 outputs 808482864
0x10000000 outputs 808548400
10000000000000000000000000000000 outputs 808464433
x01 x00 x00 x00 outputs 813183068
x00 x00 x00 x01 outputs 813183068 same....
etc.etc. It just keeps returning the same large integers. I thought they were memory addresses but its consistent output/input so I guess not.
View 2 Replies
ADVERTISEMENT
Dec 26, 2013
I am writing a program where I need to read a byte of char data and convert it into a text string of binary data that represents the hex value...
i.e. The char byte is 0x42 so I need a string that has 01000010 in it. I've written the following subroutine....
------------- My Subroutine ----------------------------------------------------------------------
void charbytetostring(char input, char *output){
int i, remainder;
char BASE=0x2;
int DIGITS=8;
char digitsArray[3] = "01";
[Code] ....
When I submitted the byte 0x42 to the subroutine, the subroutine returned to the output variable 01000010... Life is good.
The next byte that came in was 0x91. When I submit this to the subroutine I get garbage out.
I am using a debugger and stepped through the subroutine a line at a time. When I feed it 0x42 I get what I expect for all variables at all points in the execution.
When I submit 0x91 When the line remainder = input % BASE; gets executed the remainder variable gets set to 0xFFFF (I expected 1). Also, when the next line gets executed..
input = input / BASE; I get C9 where I expected to get 48.
My question is, are there data limits on what can be used with the mod (%) operator? Or am I doing something more fundamentally incorrect?
View 6 Replies
View Related
Apr 13, 2014
Basically it has to do with the byte ordering in a binary buffer vs the typing of a variable used to hold it.
To give you an example, if I have a buffer (say of indefinite length), and a ptr "ptr" pointing to a byte in the buffer (say, C0), such that if I open the buffer in a binary viewer it reads like this: Code: C0 DD FE 1F Such that this is true:
Code:
/*ptr is uint8_t*/
*ptr == 0xC0
Then I do this:
Code:
uint16_t var;
var = *(ptr+1);
I would expect the result to be:
Code: DD FE /*56830*/
Though if I print that out with:
Code:
printf("%u
", var);
It'll print:
Code: 65245 /*(FE DD)*/
Now obviously it's byte swapped, but what is causing that? I'm assuming if I just stream that out to a file byte by byte it'll be fine, so it's something with the 16 bit data type (also have seen this issue with a 32 bit data type, where all 4 are in reverse order). Is there any way to 'fix' it except bit shifts & masks?
View 14 Replies
View Related
Mar 30, 2013
What is the most efficient way to read a bit at a particular position in a byte?
View 13 Replies
View Related
Mar 30, 2013
What is the most efficient way to read a bit at a particular position in a byte?
View 3 Replies
View Related
Nov 24, 2014
When reading a binary .img why is it when you read it by slurping in the file, then save it to a string and cout, you don't see the binary but random garbage?
View 11 Replies
View Related
Apr 22, 2013
I am trying to get the code to read from the txt file one bite at a time and then write this bite into the binary file but i cant seem to get it working.
FILE *fpcust, *fpcustbin; //<<<<<-----point to both sales and customers text files, and the new .bin files for both
char buffer;
int ch;
int ch1;
fpcust = fopen("c:customers.txt", "r"); //<<<<-----pointing to the file
fpcustbin = fopen("c:customers.bin", "wb"); //<<<<<-----pointing to the new binary file, opening in writing binary
[Code]...
View 3 Replies
View Related
May 6, 2014
I use the following function to read doubles from a binary file:
Code:
int64_t read_current(FILE *input, double *current, uint64_t position, uint64_t length)
{
printf("asked for %" PRIu64" samples
",length);
printf("reading from %" PRIu64 " to %" PRIu64 "
",position,position+length);
union{
double d;
uint64_t i;
}
[code]...
As long as position+length doesn't exceed the end of the file, all is well. However, if it does, weird things start to happen. In particular, the apparent length of the file (that is, the value of "read" after the function has finished) becomes dependent on "length"). I know that "position" is never past the end of the file.
View 12 Replies
View Related
Oct 12, 2014
I have this file want to read it source code [URL] ....
View 10 Replies
View Related
Nov 9, 2013
I'm trying to do file compression/decompression in C and I need to handle one bit at a time.
I currently try to do:
unsigned char byte = fgetc(fptr);
and later
byte >>= 1;
but the problem is that I have to use the first bit of the byte and then treat the next 8 bits as one byte. The byte usage keeps shifting over in this way. It's probably quite clear that I'm a bit lost.
View 1 Replies
View Related
Oct 11, 2014
I would like to read in binary files, then write them to another file.
I write a code, what works perfectly, if I would like to just copy the file to another. But I want to make it a little other.
If I open a file in hex-editor I also can see the ASCII values. But I would like get the ONLY the hex values to the other file.
For example:
d5 57 4f ad 30 33 0b 4e 49 a7 05 18 c4 90 66 d8 45 ac 39 3e 7d f1 a8 02 80
14 20 90 6e 20 12 38 0c 65 4a 28 d2 80 72 04 20 a9 4a 82 84 60 6a 0b 25
59 4c 30 c8 69 c0 ec fa 36 ed 3a da b1 9a 82 02 e0 bb 7e 41 87 02 f6 10 34
eb 95 93 63 01 6b 8d e1 d7 43 c3 df 92 5d 8a ed 57 61 4e 36 07 2a d7 56 2b
b5 0e 55 83 b4 76 8c b7 61 77 0e c9 76 0c 81 1b 01 63 0c 8b 73 57 d5 6d 4c
0c c2 0d 52 45 18
How could I make it?
View 4 Replies
View Related
Oct 3, 2013
I want to read a binary file using as line separator "ff77" in order to parse further each line one by one with some regex since the file is big. I have a small ruby code shown below, but I'm new in C++, and I don't know how to replicate in C++ what this ruby code does.
Code:
#!/usr/bin/env ruby
BEGIN{ $/="xffx77" } # Line separator = FF77
File.open(ARGV[0],"rb") # Open in binary mode
[Code].....
View 14 Replies
View Related
Nov 2, 2013
I run with debugger and appear this file referring the error to line 142 (in red):
Code:
/***
*xtoa.c - convert integers/longs to ASCII string
*
* The module has code to convert integers/longs to ASCII strings. See
*
*******************************************************************************/
#include <cruntime.h>
#include <stdlib.h>
#include <limits.h>
#include <tchar.h>
#include <internal.h>
#include <internal_securecrt.h>
#ifdef _UNICODE
#define xtox_s xtow_s
[Code] ...
In the calls stack window appears this
Code:
=>msvcr110d.dll!xtoa_s(unsigned long val, char * buf, unsigned int sizeInTChars, unsigned int radix, int is_neg) Line 142C
msvcr110d.dll!_itoa_s(int val, char * buf, unsigned int sizeInTChars, int radix) Line 176C
Get_Blocks.exe!main(int argc, char * * argv) Line 224C++
Get_Blocks.exe!__tmainCRTStartup() Line 536C
Get_Blocks.exe!mainCRTStartup() Line 377C
kernel32.dll!7695336a()Unknown
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
ntdll.dll!76f19f72()Unknown
ntdll.dll!76f19f45()Unknown
It seems could be becuase to _itoa_s(), I'm using like this:
Code:
_itoa_s(CONVDEC(i), num, 10, 10);
sub += num;
View 5 Replies
View Related
Oct 20, 2013
I have a binary tree, and I want to store all information its leaves stores into a binary file and then read it.
What I tried:
A function that reads the tree, and whenever it finds a leaf, it writes in the binary file:
Code:
[...]
if(tree->right == NULL && tree->left == NULL){
fwrite(tree, sizeof(tree), 1, output);
}
[...] a
And in the main function:
Code:
[...]
for(i=0;i<5;i++){
fread(tree, sizeof(tree), 1, output);
printf("This is the leaf number %d", tree->num);
}
[...]
I'm trying to read 5 nodes just to see if its working but it isn't. The output shows the first node of the tree everytime.
View 2 Replies
View Related
Jun 24, 2013
So as a learning exercise, I am trying to read and write a binary tree to a file. After googling around, I decided to use a preorder traversal (including null nodes) to write the binary tree to the file. I got stuck trying to read a tree from a file. I can't figure out how to create an unknown number of nodes when they are needed. I could use an array, but that just seems bulky - plus it could run out of space. Is that what I have to do? I've heard of vectors before, but not very much.
View 5 Replies
View Related
Jan 11, 2013
if i have 2 variables for which values are given by the user,then,does the information get stored into the file in the name of the variable,or just like packs of information.....if the former is true,how to extract the information of a particular variable alone from the whole file?
View 4 Replies
View Related
Mar 2, 2013
I'm reading a binary file and I want to read all of the letters, but I have noticed that it doesn't read all of the letters and I think it is because of appears as data.
View 11 Replies
View Related
Mar 14, 2013
Objective of this program is to read binary data from a file and print it.
Code:
#include <stdio.h>
void readFile(void);
int main(){
readFile();
return 0;
[Code] .....
But When I Run This Code First It Print "Error." Then Rest Of The File.Say In My File I Have "I AM HUMAN", It Prints "Error. HUMAN"!!
I Cant Figure Out Whats Wrong In The readFile() Function.It seems right to me.
View 4 Replies
View Related
Aug 21, 2014
I would like to write a complete structure array to a file and read it back, recovering all the data. I have tried the following:
Code:
#include <stdio.h>
#include <string.h>
#define NUM 256
const char *fname="binary.bin";
typedef struct foo_s {
int intA;
int intB;
char string[20];
[Code]...
//---------------------------------------------------- but the mac field is reading back some random value repeatedly. Why is that? And how do I fix this?
View 8 Replies
View Related
Dec 6, 2013
Following is the program I wrote it basically takes 9 inputs and then save them into binary file. then print out the data stored in binary data and find inverse of it then print the inverse out. but its stuck in a loop somewhere.
Code:
#include <stdio.h>
int main() {
int a[3][3],i,j;
float determinant=0;
int x;
FILE *fp = fopen ("file.bin", "wb");
[Code] .....
View 6 Replies
View Related
Jun 25, 2014
I basically want to create a save editor application that will enable people to alter various values in the save by clicking on releveant buttons and then also for the editor to auto update the checksum when changes are done.
The save file is in hex so from what I can gather I would need to create a button to open the file using 'open file dialogue' and then read the file into a byte array so that the values can be called at any time when a particular butto is pressed and the application will then seek to the point in the file to make the required changes.
View 3 Replies
View Related
Oct 7, 2014
I have an application that has its own embedded web server. I am trying to add jQuery/Ajax file upload capabilities to the application however, I am running into issues getting the posted file. The jQuery/Ajax portion is similar to this method here. Due to the way the webserver was written (its in a dll and I do not have access to the source), the posted file comes in as a byte[]. If I try to save the byte array directly to file using:
File.WriteAllBytes("path", ByteArray)
I end up with a corrupt file that I cannot open. I believe this is because the byte array also contains the posted file header info (Content-Disposition, name, filename, etc.). If I view the contents of the byte array using:
System.Text.Encoding.Default.GetString(ByteArray)
the header info can be viewed as:
------WebKitFormBoundaryQfPjgEVpjoWgA5JL
Content-Disposition: form-data; name="0"; filename="someimage.png"
Content-Type: image/png
‰PNG
Based on the selected file size and the size of the byte array, the entire file is in the byte array. How can I go about extracting and saving the posted file from the byte array?
View 2 Replies
View Related
Sep 20, 2014
I'm trying read a binary file. A binary files is continued with bytes(ascci characters). and the 1st position is the position 0(zero).
I'm trying read just some values from ICO file:
- the 3rd value is in 4th-1 position(number of icons); (See the table: [URL] .... )
- the with is the (numberoficons*16) + 4 (the 16 is the Entries structure size) position;
- the height is the (numberoficons*16) + 4 + 4 (the 16 is the Entries structure size) position.
now see the code:
int iconwidth;
int iconheight;
int iconcount;
FILE *iconfile = fopen(filename.c_str(), "rb");//open the file
fseek(iconfile,4-1,SEEK_SET); //put the file in position 6(the position starts from 0)
fread(&iconcount,sizeof(char),2,iconfile);//get 2 blocks with char size(2 bytes).. i'm getting the number of icons
[Code] ....
so what i'm doing wrong with block positions?
View 13 Replies
View Related
Sep 6, 2013
I have a structure stored in a binary file, now I want to read each string from it (or line), can I do that using fgets?
View 12 Replies
View Related
Feb 4, 2013
I am planning to use this mostly to copy binary files, but why won't this work with text???
input.txt
int main(int argc, char* argv[]) {
// open file
std::ifstream ifs;
ifs.open("./input.txt", std::ios::binary);
[Code] ....
output.txt
310^?z^@^@^@^@^@300367346^A^@
Will this method always work to copy a file?
View 2 Replies
View Related
Feb 19, 2014
#include <stdio.h>
#include <stdlib.h>
int main () {
FILE * pFile;
long lSize;
char * buffer;
size_t result;
pFile = fopen ( "myfile.bin" , "rb" );
[Code] .....
How to open binary for read and write? Why the buffer is char * buffer? i mean in binary u cant read chars . How can it be? how the data is represented? just like txt file? What the buffer will contain how to print this buffer???
View 3 Replies
View Related