1. 程式人生 > >Java的String/byte[]/16進位制相互轉換

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中轉換Byte16轉換

字串轉換成十六進位制字串方法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中16Unicode編碼與中文的相互轉換

<!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),