Jump to content

  • Log In with Google      Sign In   
  • Create Account


#Actualmikenovemberoscar

Posted 31 July 2013 - 06:26 AM

Hi all,

 

I am trying to write binary data to a file, and I have the following C++ code:

(I borrowed the write & read functions from here)

u8 readU8(istream& file)
{
    u8 value = '\0';
    file.read((char*)value,1);
    return value;
}

void writeU8(ostream &file, u8 value)
{
    file.write((char*)value,1);
}
...
       animationFile.open("/Users/me/Desktop/BINARY_FILE.bin", ios::out | ios::binary | ios::trunc);
        
        if (!animationFile.is_open())
        {
            return 1;
        }
        
        writeU8(animationFile,u8('a'));
...

Although my program crashes and lldb returns an 'EXC_BAD_ACCESS (code = 1, address = 0x50).

 

What is wrong? If I change writeU8 to writeU16 (and the anonymous object to u16('a')):

void writeU16(ostream &file, u16 value)
{
    u8 bytes[2];
    
    // Extract the individual bytes from our value.
    
    bytes[0] = (value) & 0xFF; // Low byte
    bytes[1] = (value >> 8) & 0xFF; // High byte
    
    // Write those bytes to the file.
    
    file.write((char*)bytes,2);
}

There is no exception, but no data is written to the file.

I have also tried many different paths and filenames.

 

Thanks


#1mikenovemberoscar

Posted 31 July 2013 - 06:24 AM

Hi all,

 

I am trying to write binary data to a file, and I have the following C++ code:

u8 readU8(istream& file)
{
    u8 value = '\0';
    file.read((char*)value,1);
    return value;
}

void writeU8(ostream &file, u8 value)
{
    file.write((char*)value,1);
}
...
       animationFile.open("/Users/me/Desktop/BINARY_FILE.bin", ios::out | ios::binary | ios::trunc);
        
        if (!animationFile.is_open())
        {
            return 1;
        }
        
        writeU8(animationFile,u8('a'));
...

Although my program crashes and lldb returns an 'EXC_BAD_ACCESS (code = 1, address = 0x50).

 

What is wrong? If I change writeU8 to writeU16 (and the anonymous object to u16('a')):

void writeU16(ostream &file, u16 value)
{
    u8 bytes[2];
    
    // Extract the individual bytes from our value.
    
    bytes[0] = (value) & 0xFF; // Low byte
    bytes[1] = (value >> 8) & 0xFF; // High byte
    
    // Write those bytes to the file.
    
    file.write((char*)bytes,2);
}

There is no exception, but no data is written to the file.

I have also tried many different paths and filenames.

 

Thanks


PARTNERS