Java中字符串和byte數(shù)組之間的簡單轉(zhuǎn)換方法
前言
在Java編程中,我們常常需要對字符串和byte數(shù)組進(jìn)行轉(zhuǎn)換。字符串一般是用來表示文本信息,而byte數(shù)組則是用來表示二進(jìn)制數(shù)據(jù),如圖片、音頻等。本文將詳細(xì)介紹Java中字符串和byte數(shù)組之間的轉(zhuǎn)換方法,包括將字符串轉(zhuǎn)換為byte數(shù)組和將byte數(shù)組轉(zhuǎn)換為字符串。
Java中字符串與byte數(shù)組之間的轉(zhuǎn)換方法。
將字符串轉(zhuǎn)換為byte數(shù)組
Java中有兩種方式將字符串轉(zhuǎn)換為byte數(shù)組:使用String的getBytes()方法和使用Charset類的encode()方法。
String的getBytes()方法
String的getBytes()方法可以將一個字符串轉(zhuǎn)換為一個byte數(shù)組。該方法有多個重載形式,其中一個常用的形式是getBytes(String charsetName),該方法將字符串按照指定的字符集編碼為byte數(shù)組。
例如,將字符串\Hello, world!\轉(zhuǎn)換為byte數(shù)組:
String str = \Hello, world!\byte[] bytes = str.getBytes();
getBytes()方法默認(rèn)使用平臺默認(rèn)的字符集來編碼字符串,如果需要指定字符集,可以使用getBytes(String charsetName)方法來指定字符集。例如,將字符串按照UTF-8字符集編碼為byte數(shù)組:
String str = \Hello, world!\byte[] bytes = str.getBytes(\UTF-8\
Charset類的encode()方法
Charset類是Java提供的用于表示字符集的類。使用Charset類的encode()方法可以將一個字符串編碼為指定字符集的byte數(shù)組。
例如,將字符串按照UTF-8字符集編碼為byte數(shù)組:
String str = \Hello, world!\Charset charset = Charset.forName(\UTF-8\ByteBuffer byteBuffer = charset.encode(str); byte[] bytes = byteBuffer.array();
注意,Charset類的encode()方法返回一個ByteBuffer對象,需要通過調(diào)用array()方法將其轉(zhuǎn)換為byte數(shù)組。
將byte數(shù)組轉(zhuǎn)換為字符串
Java中有兩種方式將byte數(shù)組轉(zhuǎn)換為字符串:使用String的構(gòu)造方法和使用Charset類的decode()方法。
String的構(gòu)造方法
String的構(gòu)造方法可以將一個byte數(shù)組轉(zhuǎn)換為一個字符串。該構(gòu)造方法有多個重載形式,其中一個常用的形式是String(byte[] bytes),該構(gòu)造方法使用平臺默認(rèn)的字符集將byte數(shù)組解碼為字符串。
例如,將byte數(shù)組轉(zhuǎn)換為字符串:
byte[] bytes = {72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33}; String str = new String(bytes);
如果需要指定字符集,可以使用帶有字符集參數(shù)的構(gòu)造方法。例如,將byte數(shù)組按照UTF-8字符集解碼為字符串:
byte[] bytes = {-26, -75, -116, -24, -81, -107, -26, -75, -104, -24, -81, -91, -17, -68, -124, -27, -105, -100, -28, -72, -102, -22, -109, -88, -23, -83, -123}; String str = new String(bytes, \UTF-8\
Charset類的decode()方法
使用Charset類的decode()方法可以將一個byte數(shù)組解碼為指定字符集的字符串。
例如,將byte數(shù)組按照UTF-8字符集解碼為字符串:
byte[] bytes = {-26, -75, -116, -24, -81, -107, -26, -75, -104, -24, -81, -91, -17, -68, -124, -27, -105, -100, -28, -72, -102, -22, -109, -88, -23, -83, -123}; Charset charset = Charset.forName(\UTF-8\CharBuffer charBuffer = charset.decode(ByteBuffer.wrap(bytes)); String str = charBuffer.toString();
注意,Charset類的decode()方法返回一個CharBuffer對象,需要通過調(diào)用toString()方法將其轉(zhuǎn)換為字符串。
總結(jié)
本文介紹了Java中字符串和byte數(shù)組之間的轉(zhuǎn)換方法,包括將字符串轉(zhuǎn)換為byte數(shù)組和將byte數(shù)組轉(zhuǎn)換為字符串。其中,字符串的getBytes()方法和Charset類的encode()方法可以將字符串轉(zhuǎn)換為byte數(shù)組,String的構(gòu)造方法和Charset類的decode()方法可以將byte數(shù)組轉(zhuǎn)換為字符串。在實(shí)際應(yīng)用中,需要根據(jù)實(shí)際情況選擇合適的轉(zhuǎn)換方法和字符集。
到此這篇關(guān)于Java中字符串和byte數(shù)組之間的簡單轉(zhuǎn)換方法的文章就介紹到這了,更多相關(guān)Java字符串與byte數(shù)組轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解析Spring RestTemplate必須搭配MultiValueMap的理由
本文給大家介紹Spring RestTemplate必須搭配MultiValueMap的理由,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-11-11SpringBoot中實(shí)現(xiàn)@Scheduled動態(tài)定時任務(wù)
SpringBoot中的@Scheduled注解為定時任務(wù)提供了一種很簡單的實(shí)現(xiàn),本文主要介紹了SpringBoot中實(shí)現(xiàn)@Scheduled動態(tài)定時任務(wù),具有一定的參考價值,感興趣的可以了解一下2024-01-01spring?cloud中Feign導(dǎo)入jar失敗的問題及解決方案
這篇文章主要介紹了spring?cloud中Feign導(dǎo)入jar失敗的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03詳解IntelliJ IDEA 自帶的 HTTP Client 接口調(diào)用插件吊打 Postman
HTTP Client 是 IDEA 自帶的一款簡潔輕量級的接口調(diào)用插件,通過它,我們能在 IDEA 上開發(fā),調(diào)試,測試 RESTful Web 服務(wù),接下來通過本文給大家分享IntelliJ IDEA 自帶的 HTTP Client 接口調(diào)用插件吊打 Postman的知識,感興趣的朋友一起看看吧2021-05-05Java中的Static class詳解及實(shí)例代碼
這篇文章主要介紹了 Java中的Static class詳解及實(shí)例代碼的相關(guān)資料,在Java中我們可以有靜態(tài)實(shí)例變量、靜態(tài)方法、靜態(tài)塊。類也可以是靜態(tài)的,需要的朋友可以參考下2017-03-03