1. 程式人生 > >Java中字元和byte陣列之間的相互轉換

Java中字元和byte陣列之間的相互轉換

Java與其他語言編寫的程式進行tcp/ip socket通訊時,通訊內容一般都轉換成byte陣列型,java在字元與陣列轉換也是非常方便的;

1、將字元轉換成byte陣列

     String  str = "羅長";
     byte[] sb = str.getBytes();

2、將byte陣列轉換成字元

     byte[] b={(byte)0xB8,(byte)0xDF,(byte)0xCB,(byte)0xD9}; 
     String str= new String (b);

3、為了方便字元的加減操作,通常以16進位制字元替代普通字元與byte陣列進行相互轉換

 /**
  * 16進位制的字串表示轉成位元組陣列
  *
  * @param hexString
  *            16進位制格式的字串
  * @return 轉換後的位元組陣列
  **/
 public static byte[] toByteArray(String hexString) {
  if (StringUtils.isEmpty(hexString))
   throw new IllegalArgumentException("this hexString must not be empty");
 
  hexString = hexString.toLowerCase();
  final byte[] byteArray = new byte[hexString.length() / 2];
  int k = 0;
  for (int i = 0; i < byteArray.length; i++) {//因為是16進位制,最多隻會佔用4位,轉換成位元組需要兩個16進位制的字元,高位在先
   byte high = (byte) (Character.digit(hexString.charAt(k), 16) & 0xff);
   byte low = (byte) (Character.digit(hexString.charAt(k + 1), 16) & 0xff);
   byteArray[i] = (byte) (high << 4 | low);
   k += 2;
  }
  return byteArray;
 }
 
 /**
  * 位元組陣列轉成16進製表示格式的字串
  *
  * @param byteArray
  *            需要轉換的位元組陣列
  * @return 16進製表示格式的字串
  **/
 public static String toHexString(byte[] byteArray) {
  if (byteArray == null || byteArray.length < 1)
   throw new IllegalArgumentException("this byteArray must not be null or empty");
 
  final StringBuilder hexString = new StringBuilder();
  for (int i = 0; i < byteArray.length; i++) {
   if ((byteArray[i] & 0xff) < 0x10)//0~F前面不零
    hexString.append("0");
   hexString.append(Integer.toHexString(0xFF & byteArray[i]));
  }
  return hexString.toString().toLowerCase();
 }

相關推薦

Java字元byte陣列之間相互轉換

Java與其他語言編寫的程式進行tcp/ip socket通訊時,通訊內容一般都轉換成byte陣列型,java在字元與陣列轉換也是非常方便的; 1、將字元轉換成byte陣列      String  str = "羅長";     byte[] sb = str.getBy

Java字串byte陣列之間相互轉換

1、將字元轉換成byte陣列 String str = "羅長"; byte[] sb = str.getBytes(); 2、將byte陣列轉換成字元 byte[] b={(byte)0xB8,(byte)0xDF,(byte)0xCB,(byte)0xD9}; String str=

java整數byte陣列之間轉換

做的程式有時候會需要用到, 記錄下 public class NumberUtil { /** * int整數轉換為4位元組的byte陣列 * * @param i * 整數 * @return byte陣列 */ pub

javamap表單字串相互轉換

一、需求 serialnum=123456&data=357c0a04f&enable=true&key=b5b806d0dc9 帶有&分割的字串,轉化為map的key、value型別儲存,反之也行。 二、程式碼 import java.util.

jsjava日期日期字串的相互轉換使用

摘要:在工作中只要牽扯到日期,很大可能都會牽扯到日期的計算格式的轉換等用法,這篇文章就是要探討一下平常在 js和java中對於日期的使用。 js中日期的使用 js中日期的計算 和 比較 js中兩個日期字串的計算 ###########

java int型與byte陣列之間轉換

public class NumberUtil { /** * int整數轉換為4位元組的byte陣列 * * @param i *

javacharint型別的相互轉換

char型別轉int型: char numChar = '9'; int nSum = numChar-'0'; int型別轉cahr型:int num = 9; char numChar = n

java image byte[] 相互轉換

只需要一個儲存了圖片資訊的二進位制串(byte[])然後,這樣:InputStream buffin = new ByteArrayInputStream(/*二進位制串*/, /*起始位置*/,/*二進位制串長度*/)); BufferedImage img = Image

java FileByte[]數組 相互轉換

rac ring eno print [] director mkdir int num public class Test { public static void main(String[] args){ String filePath

C#父類子類之間相互轉換

mage all spa 分享 mic ack 子類 utl round 所用到的類文件:Person.cs:Student.cs:Teacher.cs:問題1:總結:1 父類不能直接強制轉換成子類2 只有父類對象指向子類,那麽父類是可以強制轉換成子類,如果父類對象沒有指向

JavaStringbyte[]間的轉換淺析

Java語言中字串型別和位元組陣列型別相互之間的轉換經常發生,網上的分析及程式碼也比較多,本文將分析總結常規的byte[]和String間的轉換以及十六進位制String和byte[]間相互轉換的原理及實現。 1. String轉byte[] 首先我們來分析一下常規的Strin

jsjava字元unicode編碼的轉化

一般來說,良好的程式設計習慣要求在程式碼裡儘量不出現中文,一個是國際化問題,即同一份程式碼可能要滿足不同語言的顯示,還一個就是可能產生亂碼問題,不同的程式設計師用不同的IDE匯入這份程式碼可能使用了不同的預設編碼。 然而有些場景是必須保持中文的,比如讀取某個帶樣式文字的字型

關於JAVA:intbyte的互相轉換

一、基礎概念: 1.原碼: 一個byte是一個位元組,一個位元組是由8個位組成。其中最高位是符號位,範圍就是127 ~ -128。 即:0111 1111~1111 1111 也就是說:0000 0001 代表的是1,    1000 0000 代表的是-128

Java 十六進位制(Hex)與byte陣列之間轉換

一、十六進位制(Hex)與位元組(byte)的概念 十六進位制(Hex):計算機中資料的一種表示方法,它由0-9,A-F組成,字母不區分大小寫。與10進位制的對應關係是:0-9對應0-9;A-F對應10-15。 位元組(byte):   java中一個byte為8

Java:關於Integer整數與bytebyte陣列之間轉換

在本地找到一個很好的檔案,裡面包含工程應用中常用的整數與位元組、位元組陣列之間的轉換,儲存下來,方便使用。 ps:今天在應用Modbus RTU協議時,在接收到的資料幀校驗時就用到了CRC計算與接收的CRC的校驗,其中用到了整數和位元組陣列之間的轉換,儘管很簡單,但是小工具

java數組字符串相互轉換

pre com toc 函數 sdn repl pla lac mon 將字符串變成數組 Java.lang包中有String.split()方法,java中通常用split()分割字符串,返回的是一個數組。 特殊,轉義字符,必須加"\\"(“.”和“|”都是轉義字符) 示

QtQString,int,char,QByteArray之間相互轉換

int  轉 QString int m=1; QString b; b=QString::number(m) QString 轉int QString a="1111" int b; b=a.toInt() char 轉換為 QString char a='

python矩陣array陣列之間轉換

前言: array陣列要轉換成矩陣(matrix)資料型別才能進行一系列的線性運算。matrix型別也有時候要轉換成array陣列。 程式碼: 1.array轉matrix:用mat() a

String,int,char,byte[]陣列相互轉換

1. String 轉換為int String str = "abc"; int data =  Integer.parseInt(str); 或者 int data = Integer.valueOf(str); 2.int 型資料轉換到String int a = "3

QtQStringint,char等相互轉換

網上找了半天,全是QString轉int和char等的,就沒有int轉QString的,但是還是找到啦,我來整合一下哦~ Qt中 int ,float ,double轉換為QString 有兩種方法 1.使用 QString::number(); 如: