據我所知,read()
和write()
有那麼我們可以讀取和直接或文件寫入字節,而我被教導一個byte
C++中的等價物是unsigned char
,那麼爲什麼他們採取char
指針作爲參數?爲什麼fstream.read和fstream.write使用char而不是unsigned char?
另外,不要一起來看看這個功能從「bmp文件圖像讀取」圖書館,我發現:
bool BMPImage::readInfo()
{
//...
//read bmp and dib headers
unsigned char header[28] = {0};
_ifs->read((char*)header, 28);
_width = *(int*)&header[18]; //width is located in [18] and is 4 bytes size
_height = *(int*)&header[22]; //height is located in [22] and is 4 bytes size
_bpp = (unsigned char) *(short*)&header[28]; //bpp is located in [28] and is 2 bytes size
_channels = _bpp/8; //set num channels manually
//...
爲什麼會出現_ifs->read()
線的工作呢?從unsigned char轉換爲char會強制丟失數據,不是嗎?
「從unsigned char轉換爲char會強制丟失數據,不是嗎?」 - 沒有。 –
'char'和'unsigned char'具有相同的大小,即1個字節。唯一的區別是簽名:'unsigned char'總是> 0;正常的'char'也可以被簽名(但不一定是)。 –
'char'和'unsigned char'沒有實際區別。但是由於大多數人在他們的程序中使用'char',所以API接受最常用的類型是很自然的。 – SergeyA