currently I'm implementing the Burrows-Wheeler transform (and inverse transform) for raw data (like jpg etc.).
When testing on normal data like textfiles no problems occur. But when it comes to reading jpg files e.g. it stops reading at character 0x1a aka substitute character.
I've been searching through the internet for solutions which doesn't take OS dependend code but without results...
I was thinking to read in stdin in binary mode but that isn't quite easy I guess. Is there any simple method to solve this problem?
code:
buffer = (unsigned char*) calloc(block_size+1,sizeof(unsigned char));
length = fread((unsigned char*) buffer, 1, block_size, stdin);
if(length == 0){
// file is empty
}else{
b_length = length;
while(length == b_length){
buffer[block_size] = '';
encodeBlock(buffer,length);
length = fread((unsigned char*) buffer, 1, block_size, stdin);
}
if(length != 0){
buffer[length] = '';
encodeBlock(buffer,length);
}
}
free(buffer);
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…