QT 讀寫二進制 (數值)高位在前


在人們的計數規則中,一般都認為高位在前,即往前的地位大,如123,我們認為是一百二十三,

 

但在計算機中數值是以二進制存儲的,字節是最小的存儲單位,如int(32位),占4個字節,每個字節有八位,

24用十六進制表示,高位在前  是00000018,但如果以高位在后,則為18000000,

看出高位在前和高位在后,是說四個字節的順序,而每個字節中的二進制,一定是以高位在前排列的,

 

見筆記本

 

QT中是怎樣處理高位在前、高位在后的:

void QDataStream::setByteOrder(ByteOrder bo)

{
byteorder = bo;
if (QSysInfo::ByteOrder == QSysInfo::BigEndian)
noswap = (byteorder == BigEndian);
else
noswap = (byteorder == LittleEndian);
}
 
QDataStream &QDataStream::operator>>(qint32 &i)
{
i = 0;
CHECK_STREAM_PRECOND(*this)
if (noswap) {
if (dev->read((char *)&i, 4) != 4) {
i = 0;
setStatus(ReadPastEnd);
}
} else { // swap bytes
union {
qint32 val1;
char val2[4];
} x;
char *p = x.val2;
char b[4];
if (dev->read(b, 4) == 4) {
*p++ = b[3];
*p++ = b[2];
*p++ = b[1];
*p = b[0];
i = x.val1;
} else {
setStatus(ReadPastEnd);
}
}
return *this;
}
 
        

http://blog.sina.com.cn/s/blog_a401a1ea0101fjtx.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM