> Java > java지도 시간 > 본문

JAVA 16진수 및 문자열 변환

高洛峰
풀어 주다: 2017-01-24 15:10:57
원래의
2169명이 탐색했습니다.

toHexString
public static String toHexString(int i)은 정수 매개변수의 문자열 표현을 부호 없는 16진수 정수 형식으로 반환합니다.
인수가 음수이면 부호 없는 정수 값은 인수에 232를 더한 값이고, 그렇지 않으면 인수와 같습니다. 값을 앞에 0이 없는 16진수(기본 16) ASCII 숫자 문자열로 변환합니다. 부호 없는 숫자의 크기 값이 0이면 0 문자 '0'('u0030')으로 표시됩니다. 그렇지 않으면 부호 없는 숫자의 크기 표현에서 첫 번째 문자는 0 문자가 아닙니다. 16진수로 다음 문자를 사용하세요.
0123456789abcdef
이러한 문자의 범위는 'u0030'~'u0039', 'u0061'~'u0066'입니다. 대문자를 원하는 경우 결과에 대해 String.toUpperCase() 메서드를 호출할 수 있습니다.
Integer.toHexString(n).toUpperCase()
매개변수:
i - 변환할 정수 끈.
반환:
16진수(기본 16) 인수로 된 부호 없는 정수 값의 문자열 표현입니다.
//문자열을 16진수 인코딩으로 변환
public static String toHexString(String s)
{
String str=""
for (int i=0;i< s.length ();i++)
{
int ch = (int)s.charAt(i);
String s4 = Integer.toHexString(ch)
str = str + s4; }
return str;
}
// 16진수 인코딩을 문자열로 변환
public static String toStringHex(String s)
{
byte[] baKeyword = new byte[s.length ()/2];
for(int i = 0; i < baKeyword.length; i++)
{
try
{
baKeyword[i ] = (바이트)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
}
catch(Exception e)
{
e.printStackTrace()
}
}
시도
{
s = new String(baKeyword, "utf-8");//UTF-16le:Not
}
catch(예외 e1 )
{
e1.printStackTrace();
}
return s;
}
// 16진수 인코딩을 문자열로 변환
public static String toStringHex(String s)
{
byte[] baKeyword = new byte[s.length()/2]
for(int i = 0; i < baKeyword.length ; i++)
{
try
{
baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16) )
}
catch( 예외 e)
{
e.printStackTrace();
}
}
try
{
s = new String (baKeyword, "utf-8");/ /UTF-16le:
}
catch(예외 e1)
{
e1.printStackTrace();
}
return s; void main(String[] args) {
System.out.println(encode("中文"));
System.out.println(decode(encode( "중국어")));
/*
* 16진수 문자 집합
*/
private static String hexString="0123456789ABCDEF";
/*
* 문자열을 모든 문자에 적용할 수 있는 16진수로 인코딩합니다. (중국어 포함)
*/
public static String encode(String str)
{
//기본 인코딩에 따라 문자 가져오기 섹션 배열
byte[] bytes=str.getBytes ();
StringBuilder sb=new StringBuilder(bytes.length*2)
//바이트 배열의 각 바이트를 2자리 16진수 정수로 분해합니다.
for(int i=0;i{
sb.append(hexString.charAt((bytes[i]&0xf0)>>4 ))
sb.append(hexString.charAt((bytes[i]) &0x0f)>>0));
}
return sb.toString();
}
/*
* 16진수를 문자열로 디코딩합니다(중국어 포함). )
*/
public static String decode(String bytes)
{
ByteArrayOutputStream baos= new ByteArrayOutputStream(bytes.length()/2)
//각 2자리 16진수 조합; 정수를 1바이트로 변환
for(int i=0;ibaos.write((hexString.indexOf(bytes.charAt(i))<<4 |hexString.indexOf(bytes.charAt(i+1))));
return new String( baos.toByteArray());
}
두 번째 방법:
지정된 바이트 배열을 인쇄합니다. 16진수 형식의 콘솔

package com.nantian.iclient.atm.sdb; 

public class Util { 
public Util() { 
} 

/** 
* 将指定byte数组以16进制的形式打印到控制台 
* @param hint String 
* @param b byte[] 
* @return void 
*/ 
public static void printHexString(String hint, byte[] b) { 
System.out.print(hint); 
for (int i = 0; i < b.length; i++) { 
String hex = Integer.toHexString(b[i] & 0xFF); 
if (hex.length() == 1) { 
hex = &#39;0&#39; + hex; 
} 
System.out.print(hex.toUpperCase() + " "); 
} 
System.out.println(""); 
} 

/** 
* 
* @param b byte[] 
* @return String 
*/ 
public static String Bytes2HexString(byte[] b) { 
String ret = ""; 
for (int i = 0; i < b.length; i++) { 
String hex = Integer.toHexString(b[i] & 0xFF); 
if (hex.length() == 1) { 
hex = &#39;0&#39; + hex; 
} 
ret += hex.toUpperCase(); 
} 
return ret; 
} 

/** 
* 将两个ASCII字符合成一个字节; 
* 如:"EF"--> 0xEF 
* @param src0 byte 
* @param src1 byte 
* @return byte 
*/ 
public static byte uniteBytes(byte src0, byte src1) { 
byte _b0 = Byte.decode("0x" + new String(new byte[]{src0})).byteValue(); 
_b0 = (byte)(_b0 << 4); 
byte _b1 = Byte.decode("0x" + new String(new byte[]{src1})).byteValue(); 
byte ret = (byte)(_b0 ^ _b1); 
return ret; 
} 

/** 
* 将指定字符串src,以每两个字符分割转换为16进制形式 
* 如:"2B44EFD9" --> byte[]{0x2B, 0x44, 0xEF, 0xD9} 
* @param src String 
* @return byte[] 
*/ 
public static byte[] HexString2Bytes(String src){ 
byte[] ret = new byte[8]; 
byte[] tmp = src.getBytes(); 
for(int i=0; i<8; i++){ 
ret[i] = uniteBytes(tmp[i*2], tmp[i*2+1]); 
} 
return ret; 
} 

}
로그인 후 복사

자세한 내용 JAVA 16진수 문자열 변환 관련 기사는 PHP 중국어 웹사이트를 참고하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿