您的位置:首页 > 编程语言 > Java开发

java中字符串与16进制,byte之间的转换

2012-01-27 16:17 357 查看
package
org.lib.code;
005
006
/**
007
*
java String 与各种进制字符之间的转换
008
*
009
*
010
*/
011
public
class
Coding
{
012
013
/**
014
 
*
字符串转换成十六进制值
015
 
*
@param bin String 我们看到的要转换成十六进制的字符串
016
 
*
@return
017
 
*/
018
public
static
String
bin2hex(String bin) {
019
char
[]
digital =
"0123456789ABCDEF"
.toCharArray();
020
StringBuffer
sb =
new
StringBuffer(
""
);
021
byte
[]
bs = bin.getBytes();
022
int
bit;
023
for
(
int
i
=
0
;
i < bs.length; i++) {
024
bit
= (bs[i] &
0x0f0
)
>>
4
;
025
sb.append(digital[bit]);
026
bit
= bs[i] &
0x0f
;
027
sb.append(digital[bit]);
028
}
029
return
sb.toString();
030
}
031
032
/**
033
 
*
十六进制转换字符串
034
 
*
@param hex String 十六进制
035
 
*
@return String 转换后的字符串
036
 
*/
037
public
static
String
hex2bin(String hex) {
038
String
digital =
"0123456789ABCDEF"
;
039
char
[]
hex2char = hex.toCharArray();
040
byte
[]
bytes =
new
byte
[hex.length()
/
2
];
041
int
temp;
042
for
(
int
i
=
0
;
i < bytes.length; i++) {
043
temp
= digital.indexOf(hex2char[
2
*
i]) *
16
;
044
temp
+= digital.indexOf(hex2char[
2
*
i +
1
]);
045
bytes[i]
= (
byte
)
(temp &
0xff
);
046
}
047
return
new
String(bytes);
048
}
049
050
/**
051
 
*
java字节码转字符串
052
 
*
@param b
053
 
*
@return
054
 
*/
055
public
static
String
byte2hex(
byte
[]
b) {
//一个字节的数,
056
057
//
转成16进制字符串
058
059
String
hs =
""
;
060
String
tmp =
""
;
061
for
(
int
n
=
0
;
n < b.length; n++) {
062
//整数转成十六进制表示
063
064
tmp
= (java.lang.Integer.toHexString(b
&
0XFF
));
065
if
(tmp.length()
==
1
)
{
066
hs
= hs +
"0"
+
tmp;
067
}
else
{
068
hs
= hs +tmp;
069
}
070
}
071
tmp
=
null
;
072
return
hs.toUpperCase();
//转成大写
073
074
}
075
076
/**
077
 
*
字符串转java字节码
078
 
*
@param b
079
 
*
@return
080
 
*/
081
public
static
byte
[]
hex2byte(
byte
[]
b) {
082
if
((b.length
%
2
)
!=
0
)
{
083
throw
new
IllegalArgumentException(
"长度不是偶数"
);
084
}
085
byte
[]
b2 =
new
byte
[b.length
/
2
];
086
for
(
int
n
=
0
;
n < b.length; n +=
2
)
{
087
String
item =
new
String(b,
n,
2
);
088
//
两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个进制字节
089
090
b2[n
/
2
]
= (
byte
)
Integer.parseInt(item,
16
);
091
}
092
b
=
null
;
093
return
b2;
094
}
095
096
public
static
void
main(String[]
args) {
097
String
content =
"技术性问题EDF%&^%#_|~"
;
098
System.out.println(bin2hex(content));
099
System.out.println(hex2bin(bin2hex(content)));
100
}
101
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  byte java hex string null