C++ :: Exceeded 32bit Register Value Exceeds 4 Bytes
May 28, 2014
My question, What happens when with the 32 bit register value exceeds 4 bytes while programming in c++? Im interested in encryption.
Im programming and doing some calculations. The hex value "0xFA062F2F" multiplied by "6D" sends it over "0x6A74A21703", which exceeds 32bit.
My problem is while programming in C++, I do some calculations such as above, and I get the hex value "0xC0000001" which should be "0x6A74A21703". I made sure that I use long long as my interger type.
In this program when I input a string for the variable name,It is getting printed completely, irrespective how many characters are there in the string.But If the string (which is input to the second variable that is game )holds more than 5 characters. the input of the first variable(name) is getting disturbed..why?
look at the below cited output to be more clear about my doubts.
OUTPUT NO:1
Enter your name:LINISHFRANCIS (Note that the input holds more than five chars) Enter your game:GOLF(input is less than five chars)
LINISHFRANCIS loves GOLF(Two inputs are getting printed comopletely)
OUTPUT NO:
Enter your name:LINISHFRANCIS (Note that the input holds more than five chars) Enter your game:FOOTBALL(input is more than five chars)
ALL loves FOOTBALL [Note that "ALL" is the last three letters of FOOTBALL
i don't understand why this program crash if i'll insert a number more of 5 times... i want to allocate dynamically a vector if the input of the user exceeds 5 times... this is the code:
Code:
#include <stdio.h> #include <stdlib.h> int main() { int * vettore, n; unsigned int len=1; }
I have two third party DLL files that I wanted to check if they are 32bit or 64. I searched the web and some suggested corflags, I found it under "C:Program Files (x86)Microsoft SDKsWindowsv7.0ABin" (my machine is 64bit but I didn't find the utility under "Program Files" folder), it came out with the message:
corflags : error CF007 : The specified file does not have a valid NT file header
I am looking for a way to create a virtual registry and force only certain programs to use this one? Or to create a virtual Registry but which i can shut down (this registry will be only used while i activate it)?
Or redirect all querys to another place in the registry I've seen similar issues. But there is no answer how to use the register selectively!
I need to use a file as an accumulator of very large size.
I want to write one bit at a time. I have an iteration engine that applys so logic to either add 1, do nothing, or subtract 1 from the array, but it has to be much larger when dealing with multi-GB files.
So I either need to & the 8bit to 4K array value to a file or write it it one bit at a time.
But it is not that I want to write sequential bytes, I need the file to be written so it acts as accumulator.
I know its in front of my face, but I need to rethink this
How to read pixels from an x,y coordinate using the VGA register values?
byte readVRAMdirect(VGA_Type *VGA, uint_32 start, uint_32 offset) //Used in 256 color mode! { if (!VGA->VRAM_size) return 0; //No size! return VGA->VRAM[SAFEMOD((start*4)+offset,VGA->VRAM_size)]; //The full protected offset!
[code]....
getVRAMScanlineStart(VGA,y) gives the offset register multiplied by 2 (shl 1), multiplied with the current memory address size (byte, word or dword) multiplied by the scanline. 256-color mode is already working. GETBIT gives a bit #(0-7) of a specified byte.
writeVRAMplane & readVRAMplane are used by the CPU to write data to VRAM (address 0xA000:xxxx-0xBFFF:xxxx), determined by the memory read and write modes(working) and the odd/even, planar or chain4 enable mode (working).how to get the 16 color and interleaved shift mode working?
I'm trying to make a cash register program, but first I need to reinitialize ones, fives, tens, and twenties to their correct dollar amount. However, whenever I try to pass the user inputted values to the function that calculates the correct dollar amount, it just prints the same number.
Here's my code:
#include <iostream> #include <string> using namespace std; //dollarAMT - recalculates the actual dollar amount void dollarAMT(int ones, int fives, int tens, int twenties){
I'm trying to make a cash register program, but first I need to reinitialize ones, fives, tens, and twenties to their correct dollar amount. However, whenever I try to pass the user inputted values to the function that calculates the correct dollar amount, it just prints the same number.
Here's my code: #include <iostream> #include <string> using namespace std; //dollarAMT - recalculates the actual dollar amount void dollarAMT(int ones, int fives, int tens, int twenties){
Im using some motors which run off PWM pins.Theres a High byte and Loq byte register (PWMH,PWML).I have an int which i need to put into these registers but i dont know how???so for example
I need to read repeatedly data from a MPEG2 file to the buffer of 188 bytes and analyse data bit by bit.
I have the problem with correct bytes reading from file. In my code listed below I have two methods for that.
First one is lossing this bytes which in hex_base mode have 0 at the begining, eg: 03, 0F, etc.
The second method based on read function which need to have buffer as a char (lenght > 1 byte). Because of that I receive different values from that from file in some cases.
How can I properly read such file?
Code: #include <iostream> #include <fstream> #include <stdlib.h> #include <windows.h> using namespace std; int main() { fstream plik_in;
I am encoding some information in a binary file, and I want to check what I am doing by printing out all the bytes that represent the file.
This is being done by opening a pointer to the file with fopen, reading in each byte of data as a char, and then writing this char to the screen.
I have some image files (e.g. "image.jpg"), whose structure I know, so that I can test my program.
When I print out the chars, they are initially correct, and follow the structure of the file as expected.
However, after about 40 bytes, I find that every subsequent character is ' ' i.e. a blank character.
I then created a CharToBin function, which allows me to print out the actual bits in the char. When doing this, it shows that all the bits are 1 for the characters. i.e. most of the file is represented by 1's, which is clearly not correct.
This happens on all the image files I have tested, and furthermore, on several other non-image files. They all start printing out ' ' after a while. However, all these files are fine and not corrupted, e.g. the image files display correctly.
Code: #include <fstream> #include <iostream> #include <sstring> #include <string> #include <stdio.h> using namespace std; string CharToBin(char ch) { bool bits[8]; for (int i = 0; i < 8; i++)
I have a FILE stream, and I want to create a function that streams a specified number of bytes (up to four bytes) and returns the value of this, as an integar.
For example, supposing that my FILE has the following data, in hex: 74 C8 02 33 F2 7B....... I then want to stream three bytes and store this as an integar. So, I want to stream "04 08 02". The data stored in the integar should then be "00 74 C8 02", because I have not streamed anything into the first byte. By converting the hex to dec, the integar should then be of the value 7653378 (if it is unsigned).
To try to achieve this, I have written the following function. I create an integar and initialise it to zero, then take each byte from the stream, and OR it with my integar. Then, I shift the integar left by 8, and read the next byte, and so on.
The problem is, when I convert "c" to "c_int", it adds on a load of 1's to the left of the "c" data. This then means that the OR comparison changes all those bits in my integar to 1.
How to solve this? I am also wondering whether there is a much more simple way of doing this, rather than having to write my own function....
Code: int StreamFileToInt(FILE *fp, int num_bytes) { char c; int c_int; int x = 0x0000; for (int i = 0; i < num_bytes; i++) {
I made this program to convert bits to bytes, because I'm so sick of seeing ISP's advertise speeds in megabits, which I consider an intentional attempt to decieve :P And I think I've finally understood how the return value of scanf works since the last time I posted here, so my program can check to see if an integer was entered before processing the input, but I'm stuck on how to make the whole program start over if an integer is not entered. I have a hunch it would involve a loop, but I can't figure out how to make the program start over at "How many mb do you need converted?" if an integer is not entered into scanf..Here is the code I have so far:
Code:
#include <stdio.h> int main () { int b, mb, kb, Byte, kB, mB, gB; char term; }
[code]....
and my program makes the assumption for now at least, that mb will be inputted because that's the unit of measurement that i usually see advertised, and i didn't bother making an if statement to print a conversion in terms of gigabytes because i've never heard of a connection that fast :P
How to delete certain bytes from middle of a binary file?
Those bytes are in fact of a struct.
One approach I found was to re-write the whole data except the struct I want to delete. But may be its not good one if file size is in gb and I will have to write complete data again.
how to combine two bytes (each byte is 8 bits wide) in order to get the original value. I am displaying values(from 0 to 500)sent from my microcontroller on the GUI.I can successfully display values from 0 to 255 as this requires just sending a byte. However sending values from 256 to 500 requires sending two bytes. The problem I am having is that I was unable to re-combine the received two bytes in order to get the original value. Below are my lines of code:
int main( void ) // this is the main function inside the microcontroller { sei(); USI_TWI_Master_Initialise(); Spi_Master_Init(); while(1) // I am using this loop to send 500(111110100) { Transmitt_Receive(244);//this function sends LOW BYTE of 500(11110100) _delay_ms(1000);
[code]....
When I combined the two bytes using the above arrangements, instead of getting 500 my GUI displayed 62708.I got the same result when I used BitConverter.