我有一個字節數組,例如從字節[0]到字節[2]的。我想先將字節[0]分成8位。然後是字節[1],最後是字節[2]。通過分裂我的意思是,如果字節[0] = 12345678那麼我想分裂爲變量A = 8,變量B = 7,變量C = 6,變量D = 5,........變量H = 0 。如何分割字節並將這些位存儲到變量中?我想在JAVA中執行此操作。將一個字節拆分爲位
回答
好吧,按位操作似乎幾乎就是你所說的。 一個字節由8個比特,所以它會在0憤怒到255 寫成二進制這是00000000〜11111111
位運算是那些主要使用口罩,以獲取儘可能多的信息儘可能超出一個字節。
說例如你有你的1101 0011字節(僅用於可見性的空間)= 211(十進制)。你可以把它分成2個「變量」b1和b2,每個半字節。因此它們將覆蓋0到15的範圍。
您如何做到這一點是通過定義一些掩碼。要獲得第一個半個字節值的掩碼將爲0000 1111. 您將值11010011應用於位運算符和(&)運算符。 所以說字節b = 211;字節掩碼1 = 15; OR字節b = 0x11010011;字節掩碼1 = 0x00001111; 然後你有你的可變字節b1 = b & mask1;
因此,應用該操作會導致b1 = 00000011 = 3; 使用掩碼字節mask2 = 0x11110000;在b上應用相同的操作,你會得到字節b2 = mask2 & b = 0x11010000;
現在當然會讓數字b2對您來說可能太大了。所有你需要做的,如果你想獲得值0x1101是右移它。因此b2 >> = 4;
你可以讓你的口罩以任何形式出現,但通常以十進制表示它們的權力(這樣你就可以從字節中取出任何一點)或者決定你想要的變量的範圍並使掩碼「較大」如0x00000011或ox00001100。這兩個掩碼將分別從一個字節中獲取2個值,每個值的範圍從0到3,您可以在一個字節內容納4個值。
欲瞭解更多信息,請致電relevant wiki。
對不起,該值是有點過(因爲字節似乎從-128到到127,但這個想法是一樣的。
二編輯(沒用過位運算自己笑)......的「 0X」符號是十六進制所以你實際上要計算自己是什麼01001111實際上意味着...相當蘇茨基:|。但它會做的伎倆
boolean a = (theByte & 0x1) != 0;
boolean b = (theByte & 0x2) != 0;
boolean c = (theByte & 0x4) != 0;
boolean d = (theByte & 0x8) != 0;
boolean e = (theByte & 0x10) != 0;
boolean f = (theByte & 0x20) != 0;
boolean g = (theByte & 0x40) != 0;
boolean h = (theByte & 0x80) != 0;
只是一個小小的評論:你確定你應該檢查0不是1? – 2012-03-10 13:04:47
@BorisStrandjev他應該檢查大於0.因爲0x80&0x80仍然是0x80。 – AlanFoster 2012-03-10 13:06:09
或!= 0實際上。我不確定哪兩個會更快...... – 2012-03-10 13:09:06
- 1. 將32位十六進制值拆分爲4個字節[QB64]
- 2. C#幫助將兩個字節的字拆分爲字節
- 3. 將32位字節拆分爲對應部分
- 4. 將字段拆分爲一個字段
- 5. 將長串拆分爲字節數組
- 6. 將express節點js拆分爲兩個
- 7. 將一個字拆分爲一個唯一字母數組
- 8. 將m個字節的數組拆分爲n個字節的塊
- 9. 將兩位NSInteger拆分爲兩個NSInteger
- 10. 使用拆分將字符串拆分爲2個字符組?
- 11. 將3個字節拆分爲6個4位並重新組合爲兩個12位
- 12. 在Scenekit中如何將一個SCNNode拆分爲多個節點?
- 13. xsl如何將一個節點拆分爲多個
- 14. 將字符串拆分後一個字
- 15. 將字符串拆分爲兩個div,並將其拆分爲字符串php
- 16. PHP:如何將一個數字拆分爲多個字符串
- 17. 如何將一個數字拆分爲n個數字的組
- 18. C++將整個字符串拆分爲另一個字符串
- 19. 將一個對象拆分爲兩個
- 20. 將32位指令拆分爲字節並使用c將結果移動到另一個地址
- 21. 將字符串拆分爲「。」
- 22. 將字符串拆分爲「|」
- 23. 將CGPoint數字拆分爲兩個CGFloat
- 24. 將字符串拆分爲兩個
- 25. 將變量拆分爲兩個字段
- 26. 將32位長分成4個字節
- 27. 使用分隔符c將字符串拆分爲一個點#
- 28. XSLT將孩子拆分爲新節點
- 29. 如何將十六進制字符串拆分爲字節?
- 30. 在Python中將utf-8字符串拆分爲字節
@Samir:謝謝,薩米爾不是編輯的如果你有回答我的問題,我會更加高興 – suraj 2012-03-10 12:03:41
你嘗試'Integer.toBinaryString(your_byte_value)'? – waqaslam 2012-03-10 12:20:08
你說:「我的意思是,如果字節[ 0] = 12345678「,一個字節變量具有'12345678'的值,sun規定一個字節是'-128'到'127'。 – MJM 2012-03-10 13:18:55