Java的String/byte[]/16進位制相互轉換
Java 字串轉 16 進位制工具類 Hex.java 實現 16進位制 0xfecd .. 和 java 字串之間的互轉換! 如果做開發,通常使用者登陸密碼都會 mad5(salt + pwd) 然後再將 md 之後的資料 hex 一下。 這個工具類,就是實現此效果的。
/*
*
*/
package com.zuidaima.haohui.common.utils;
/**
* <pre>
* 16進位制值與String/Byte之間的轉換
* @author JerryLi
* @email [email protected]
* @data 2011-10-16
* http://blog.csdn.net/hzbigdog/article/details/6877712
*
* http://www.blogjava.net/lijinglin/archive/2011/11/02/362567.html
* </pre>
*
* @project baidamei
* @author www.zuidaima.com
* @create 2012-11-14 下午5:53:14
*/
public class Hex {
/**
* 字串轉換成十六進位制字串
*
* @param String
* str 待轉換的ASCII字串
* @return String 每個Byte之間空格分隔,如: [61 6C 6B]
*/
public static String str2HexStr(String str) {
char[] chars = "0123456789ABCDEF".toCharArray();
StringBuilder sb = new StringBuilder("");
byte[] bs = str.getBytes();
int bit;
for (int i = 0; i < bs.length; i++) {
bit = (bs[i] & 0x0f0) >> 4;
sb.append(chars[bit]);
bit = bs[i] & 0x0f;
sb.append(chars[bit]);
sb.append(' ');
}
return sb.toString().trim();
}
/**
* 十六進位制轉換字串
*
* @param String
* str Byte字串(Byte之間無分隔符 如:[616C6B])
* @return String 對應的字串
*/
public static String hexStr2Str(String hexStr) {
String str = "0123456789ABCDEF";
char[] hexs = hexStr.toCharArray();
byte[] bytes = new byte[hexStr.length() / 2];
int n;
for (int i = 0; i < bytes.length; i++) {
n = str.indexOf(hexs[2 * i]) * 16;
n += str.indexOf(hexs[2 * i + 1]);
bytes[i] = (byte) (n & 0xff);
}
return new String(bytes);
}
/**
* bytes轉換成十六進位制字串
*
* @param byte[] b byte陣列
* @return String 每個Byte值之間空格分隔
*/
public static String byte2HexStr(byte[] b) {
String stmp = "";
StringBuilder sb = new StringBuilder("");
for (int n = 0; n < b.length; n++) {
stmp = Integer.toHexString(b[n] & 0xFF);
sb.append((stmp.length() == 1) ? "0" + stmp : stmp);
// sb.append(" ");
}
return sb.toString().toUpperCase().trim();
}
/**
* bytes字串轉換為Byte值
*
* @param String
* src Byte字串,每個Byte之間沒有分隔符
* @return byte[]
*/
public static byte[] hexStr2Bytes(String src) {
int m = 0, n = 0;
int l = src.length() / 2;
System.out.println(l);
byte[] ret = new byte[l];
for (int i = 0; i < l; i++) {
m = i * 2 + 1;
n = m + 1;
ret[i] = Byte.decode("0x" + src.substring(i * 2, m) + src.substring(m, n));
}
return ret;
}
/**
* String的字串轉換成unicode的String
*
* @param String
* strText 全形字串
* @return String 每個unicode之間無分隔符
* @throws Exception
*/
public static String strToUnicode(String strText) throws Exception {
char c;
StringBuilder str = new StringBuilder();
int intAsc;
String strHex;
for (int i = 0; i < strText.length(); i++) {
c = strText.charAt(i);
intAsc = (int) c;
strHex = Integer.toHexString(intAsc);
if (intAsc > 128)
str.append("\\u" + strHex);
else
// 低位在前面補00
str.append("\\u00" + strHex);
}
return str.toString();
}
/**
* unicode的String轉換成String的字串
*
* @param String
* hex 16進位制值字串 (一個unicode為2byte)
* @return String 全形字串
*/
public static String unicodeToString(String hex) {
int t = hex.length() / 6;
StringBuilder str = new StringBuilder();
for (int i = 0; i < t; i++) {
String s = hex.substring(i * 6, (i + 1) * 6);
// 高位需要補上00再轉
String s1 = s.substring(2, 4) + "00";
// 低位直接轉
String s2 = s.substring(4);
// 將16進位制的string轉為int
int n = Integer.valueOf(s1, 16) + Integer.valueOf(s2, 16);
// 將int轉換為字元
char[] chars = Character.toChars(n);
str.append(new String(chars));
}
return str.toString();
}
public static void main(String[] args) {
String hex = "ef2c71b29202f3e642f2abd8d518f367ec3fbf6a6a61beb678ae0c871ee368ac";
System.out.println(Hex.hexStr2Str(hex));
}
}
相關推薦
Java的String/byte[]/16進位制相互轉換
Java 字串轉 16 進位制工具類 Hex.java 實現 16進位制 0xfecd .. 和 java 字串之間的互轉換! 如果做開發,通常使用者登陸密碼都會 mad5(salt + pwd) 然後再將 md 之後的資料 hex 一下。 這個工具類,就是實現此效果的。 /* * */ packa
java中進位制的轉換,Byte與16進位制的轉換
字串轉換成十六進位制字串方法1: /** * 字串轉換成十六進位制字串 */ public static String str2HexStr(String str) { char[] chars = "0123456789ABCDEF".toChar
C# string byte[] 十六進位制 相互轉換
string型別轉成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte[]轉成string: string str = System.Text.Encodin
python byte 陣列 和 16進位制字串轉換
假設: hex_string = “deadbeef” 轉換成字串格式 >>> hex_data = hex_string.decode("hex") >>> hex_data "\xde\xad\xbe\xef" 轉
【華為】2019校招(字串解壓縮,26進位制和10進位制相互轉換)
字串解壓縮,a11b2bac3bad3abcd2,按照數量由少到多的順序,數量相等的按照字典序,輸出 ccccbbbbbdddddaaaaaaaaaaaaaa 竟然自己做了兩個小時,加快程式設計速度,一定加快速度,注重準確性,正式筆試沒有時間除錯。 開始用i,j指標遍歷找到字元和它的出現
Python 位元組陣列 和 16進位制字串轉換
在例子中對指定的字串: faa5fbb5fcc5fdd5010200000028000001900000000a002d00000000017d7840000003e800005fa55fb55fc55fd5 使用了三種方法將其轉換為大寫字母並每隔2個字元用空格分割處理後得
Windows 登錄檔 16進位制時間轉換( Convert Reg_binary Time to a Datetime )
背景: Windows登錄檔中,存在大量16進位制的時間,以 reg_binary儲存在登錄檔中。 例如: 0D 6C A4 4B 37 C5 CE 01 這種值日常報表中需要轉換為適合人閱讀的格式,例項如下: function Convert-BinaryDat
java進位制相互轉換方法
1. 將十進位制數任意轉為其他進位制 public class TestOne { public static void main(String[] args) { // 傳入十進位制資料:16 BigInteger in = new BigIntege
二、八、十、十六進位制相互轉換,簡單心算方法
進位制的作用:計數(很單純) !!!!! 二進位制的表現形式: 110 (滿2進1) 八進位制的表現形式: 0770 (滿8進1,用0開頭表示) 十進位制的表現形式: 2349 (滿10進1) 十六進位制的表現形式:0x
java語言基礎回顧(一)不同進位制相互轉換的總結
計算機常用進位制的相關介紹: 1,二進位制(計算機技術中廣泛採用的一種數制),八進位制,十進位制,十六進位制 二進位制資料是用“0”和“1”兩個數碼來表示的數。它的基數為2,進位制規則就是“逢二進一”,有別於我們生活當中常用的十進位制。計算機只能處理和識別“0”
VBS 進位制相互轉換
效果動畫演示 實現步驟 步驟一:建立視窗,並設計視窗畫面 步驟二:按鈕 “十進位制==>二進位制”事件 Dec=Trim(文字框0.Text) D2B = "" Do While Dec > 0 D2B = Dec Mod 2
兩位元組16進位制值轉換為int
有時候在報文中會碰到以兩個位元組來存出一個整型的資料,例如0x0080,將其重新轉換成int的方法是: char a = 0x80;//低位 char b = 0x00;//高位 int value = (int)((unsigned char)a | (unsigned char)b<
float型別和16進位制資料轉換
先看一下IEEE關於浮點數的定義: IEEE 754規定了四種表示浮點數值的方式:單精確度(32位元)、雙精確度(64位元)、延伸單精確度(43位元以上,很少使用)與延伸雙精確度(79位元以上,通常以80位元實做)。只有32位元模式有強制要求,其他都是選擇性的。 3
16進位制顏色轉換
#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >&
Nodejs 中英文轉換為16進位制 再轉換回來
function hexToStringWide(h) { var a = []; var i = 0; if (h.length % 4) { a.push(String.fromCharCode(parseInt(h.substr
關於個Base64,MD5,16進位制的轉換
1,待簽名資料以UTF-8的格式轉位元組流,對位元組流進行MD5演算法得到的簽名位元組流,再轉換為16進位制字串,即生成了數字簽名。 byte[] targetData = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes
iOS藍芽開發把16進位制字串轉換成NSData的方法
把16進位制字串轉換成NSData: -(NSData *)hexString:(NSString *)hexString { int j=0; Byte bytes[20];
printf、sscanf進行16進位制資料轉換問題
問題1:原程式的目的是將字串形式的mac地址存放在char型陣列當中(如有更好的獲取方法留言說下,謝謝),程式碼如下,在mac執行如下程式碼後,變數int型值發生了變化。 #include <stdio.h> typedef unsigned int ui
Script中16進位制Unicode編碼與中文的相互轉換
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML>  
Delphi TColor和16進位制顏色的相互轉換
Delphi TColor和16進位制顏色的相互轉換 function TColorToHex(Color: TColor): string; begin Result := IntToHex(GetRValue(Color),