淺談byte和長度為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è)長度為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è)長度為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和長度為8的boolean數(shù)組互相轉(zhuǎn)換就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Idea安裝Eslint插件提示:Plugin NativeScript was not installed的問題
這篇文章主要介紹了Idea安裝Eslint插件提示:Plugin NativeScript was not installed的問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
java并發(fā)編程synchronized底層實(shí)現(xiàn)原理
這篇文章主要介紹了java并發(fā)編程synchronized底層實(shí)現(xiàn)原理2022-02-02
利用Java實(shí)現(xiàn)word導(dǎo)入導(dǎo)出富文本(含圖片)的詳細(xì)代碼
這篇文章主要為大家詳細(xì)介紹了利用Java實(shí)現(xiàn)word導(dǎo)入導(dǎo)出富文本(含圖片),文中的示例代碼講解詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,感興趣的小伙伴可以學(xué)習(xí)一下2024-02-02
SpringBoot + WebSocket 實(shí)現(xiàn)答題對(duì)戰(zhàn)匹配機(jī)制案例詳解
這篇文章主要介紹了SpringBoot + WebSocket 實(shí)現(xiàn)答題對(duì)戰(zhàn)匹配機(jī)制,分別為每個(gè)用戶擬定四種在線狀態(tài),通過流程圖給大家展示,需要的朋友可以參考下2021-05-05
Java利用Socket實(shí)現(xiàn)網(wǎng)絡(luò)通信功能
在早期的網(wǎng)絡(luò)編程中,Socket是很常見的實(shí)現(xiàn)技術(shù)之一,比如早期的聊天室,就是基于這種技術(shù)進(jìn)行實(shí)現(xiàn)的,另外現(xiàn)在有些消息推送,也可以基于Socket實(shí)現(xiàn),本文小編給大家介紹了Java利用Socket實(shí)現(xiàn)網(wǎng)絡(luò)通信功能的示例,需要的朋友可以參考下2023-11-11
SpringBoot+MyBatis-Plus實(shí)現(xiàn)分頁功能
在SpringBoot項(xiàng)目中,結(jié)合MyBatis-Plus(簡稱MP)可以非常方便地實(shí)現(xiàn)分頁功能,MP為開發(fā)者提供了分頁插件PaginationInterceptor,只需簡單配置即可使用,本文給大家介紹了SpringBoot+MyBatis-Plus實(shí)現(xiàn)分頁功能,文中通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
Java GZip 基于內(nèi)存實(shí)現(xiàn)壓縮和解壓的方法
這篇文章主要介紹了Java GZip 基于內(nèi)存實(shí)現(xiàn)壓縮和解壓的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
Java實(shí)現(xiàn)動(dòng)態(tài)日歷效果
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)動(dòng)態(tài)日歷效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
基于SSM框架實(shí)現(xiàn)簡單的登錄注冊(cè)的示例代碼
這篇文章主要介紹了基于SSM框架實(shí)現(xiàn)簡單的登錄注冊(cè)的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12

