-1
我正在嘗試開發一個程序來讀取某些類型的文件,並以位級別提取此文件的所有包信息。瞭解字節數組上的按位操作
分組被劃分爲:
- SYC:8位
- TEI:1個比特
- PSI:1位
- TP:1位
- PID:13位
- TSC:2位
- AFC:2位
- CC:4位
我的問題是:如何分別得到位?例如PID,5位位於陣列的位置1,位置2位於8位;我如何從2個獨立的字節獲取這些信息並在之後進行求和?
我有這樣的示例代碼,以獲得PID和它再現了正確的結果:
int PID1 = (buf [1] << 8) | (buf [2] & 0xff);
我不明白這個公式,尤其是buf [1] << 8
。有人可以向我解釋這個等式嗎?我應該怎麼做才能得到包裹信息的其餘部分?
查看[Bitwise和Bit Shift Operators](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html)或者[Java Bit Manipulation Guide](http:// sys.cs.rice.edu/course/comp314/10/p2/javabits.html),或者簡單的Google ['java bitwise operators'](https://www.google.com/search?q=java+bitwise+符&即= UTF-8&OE = UTF-8)。 – Andreas
我已經看到了這些@Andreas。我的問題是:我需要從一個字節獲得5位,並與另一個8位進行求和。在這種情況下,爲什麼使用buf [1] << 8,這對我的問題意味着什麼?爲什麼不是3,因爲我只需要5位? – kileros