淺談byte和長(zhǎng)度為8的boolean數(shù)組互相轉(zhuǎn)換
由于byte是一個(gè)8位字節(jié)
所以可以用它來存放數(shù)組為8的boolean數(shù)組,這些在通信協(xié)議會(huì)經(jīng)常用到。這里給出一個(gè)java代碼對(duì)其互相轉(zhuǎn)換的。
package com.udpdemo.test2;
import java.util.Arrays;
public class Test {
/**
* @param args
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(Byte.SIZE);
byte b = 0x35; // 0011 0101
System.out.println(b);
System.out.println(Arrays.toString(getBooleanArray(b)));
//0x35; // 0011 0101
boolean[] array = new boolean[]{false, false, true, true, false, true, false, true};
System.out.println(getByte(array));
}
/**
* 將byte轉(zhuǎn)換為一個(gè)長(zhǎng)度為8的boolean數(shù)組(每bit代表一個(gè)boolean值)
*
* @param b byte
* @return boolean數(shù)組
*/
public static boolean[] getBooleanArray(byte b) {
boolean[] array = new boolean[8];
for (int i = 7; i >= 0; i--) { //對(duì)于byte的每bit進(jìn)行判定
array[i] = (b & 1) == 1; //判定byte的最后一位是否為1,若為1,則是true;否則是false
b = (byte) (b >> 1); //將byte右移一位
}
return array;
}
/**
* 將一個(gè)長(zhǎng)度為8的boolean數(shù)組(每bit代表一個(gè)boolean值)轉(zhuǎn)換為byte
* @param array
* @return
*
*/
public static byte getByte(boolean[] array) {
if(array != null && array.length > 0) {
byte b = 0;
for(int i=0;i<=7;i++) {
if(array[i]){
int nn=(1<<(7-i));
b += nn;
}
}
return b;
}
return 0;
}
}
以上這篇淺談byte和長(zhǎng)度為8的boolean數(shù)組互相轉(zhuǎn)換就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring @Valid和@Validated區(qū)別和用法實(shí)例
這篇文章主要介紹了Spring @Valid和@Validated區(qū)別和用法實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
java使用定時(shí)器實(shí)現(xiàn)監(jiān)聽數(shù)據(jù)變化
這篇文章主要為大家詳細(xì)介紹了Java如何使用定時(shí)器監(jiān)聽數(shù)據(jù)變化,當(dāng)滿足某個(gè)條件時(shí)(例如沒有數(shù)據(jù)更新)自動(dòng)執(zhí)行某項(xiàng)任務(wù),有興趣的可以了解下2023-11-11
詳細(xì)介紹Java關(guān)鍵字throw?throws?Throwable的用法與區(qū)別
這篇文章主要介紹了java中throws與throw及Throwable的用法和區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
MybatisPlus查詢數(shù)據(jù)日期格式化問題解決方法
MyBatisPlus是MyBatis的增強(qiáng)工具,支持常規(guī)的CRUD操作以及復(fù)雜的聯(lián)表查詢等功能,這篇文章主要給大家介紹了關(guān)于MybatisPlus查詢數(shù)據(jù)日期格式化問題的解決方法,需要的朋友可以參考下2023-10-10
SpringCloud Eureka實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn)
Eureka是一種基于REST(具像狀態(tài)傳輸)的服務(wù),主要用于AWS云中定位服務(wù),以實(shí)現(xiàn)中間層服務(wù)器的負(fù)載平衡和故障轉(zhuǎn)移。本文記錄一個(gè)簡(jiǎn)單的服務(wù)注冊(cè)與發(fā)現(xiàn)實(shí)例。感興趣的小伙伴們可以參考一下2019-01-01
Java中的clone方法詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
clone顧名思義就是復(fù)制, 在Java語言中, clone方法被對(duì)象調(diào)用,所以會(huì)復(fù)制對(duì)象。下面通過本文給大家介紹java中的clone方法,感興趣的朋友一起看看吧2017-06-06

