目前我正在为原始数据(如 jpg 等)实施 Burrows-Wheeler 变换(和逆变换)。在对文本文件等普通数据进行测试时,不会出现任何问题。但是在读取 jpg 文件时,例如它会在字符 0x1a 即替代字符处停止读取。我一直在互联网上搜索不采用操作系统相关代码但没有结果的解决方案......我想以二进制模式在标准输入中读取,但我猜这并不容易。有没有什么简单的方法可以解决这个问题?
代码:
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] = '\0';
encodeBlock(buffer,length);
length = fread((unsigned char*) buffer, 1, block_size, stdin);
}
if(length != 0){
buffer[length] = '\0';
encodeBlock(buffer,length);
}
}
free(buffer);