dangjava
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
數(shù)據(jù)加載中……
java二進(jìn)制,字節(jié)數(shù)組,字符,十六進(jìn)制,BCD編碼轉(zhuǎn)換 (轉(zhuǎn))
java二進(jìn)制,字節(jié)數(shù)組,字符,十六進(jìn)制,BCD編碼轉(zhuǎn)換2007
-
06
-
07
00
:
17
/** */
/**
* 把16進(jìn)制字符串轉(zhuǎn)換成字節(jié)數(shù)組
*
@param
hex
*
@return
*/
public
static
byte
[] hexStringToByte(String hex)
{
int
len
=
(hex.length()
/
2
);
byte
[] result
=
new
byte
[len];
char
[] achar
=
hex.toCharArray();
for
(
int
i
=
0
; i
<
len; i
++
)
{
int
pos
=
i
*
2
;
result[i]
=
(
byte
) (toByte(achar[pos])
<<
4
|
toByte(achar[pos
+
1
]));
}
return
result;
}
private
static
byte
toByte(
char
c)
{
byte
b
=
(
byte
)
"
0123456789ABCDEF
"
.indexOf(c);
return
b;
}
/** */
/**
* 把字節(jié)數(shù)組轉(zhuǎn)換成16進(jìn)制字符串
*
@param
bArray
*
@return
*/
public
static
final
String bytesToHexString(
byte
[] bArray)
{
StringBuffer sb
=
new
StringBuffer(bArray.length);
String sTemp;
for
(
int
i
=
0
; i
<
bArray.length; i
++
)
{
sTemp
=
Integer.toHexString(
0xFF
&
bArray[i]);
if
(sTemp.length()
<
2
)
sb.append(
0
);
sb.append(sTemp.toUpperCase());
}
return
sb.toString();
}
/** */
/**
* 把字節(jié)數(shù)組轉(zhuǎn)換為對象
*
@param
bytes
*
@return
*
@throws
IOException
*
@throws
ClassNotFoundException
*/
public
static
final
Object bytesToObject(
byte
[] bytes)
throws
IOException, ClassNotFoundException
{
ByteArrayInputStream in
=
new
ByteArrayInputStream(bytes);
ObjectInputStream oi
=
new
ObjectInputStream(in);
Object o
=
oi.readObject();
oi.close();
return
o;
}
/** */
/**
* 把可序列化對象轉(zhuǎn)換成字節(jié)數(shù)組
*
@param
s
*
@return
*
@throws
IOException
*/
public
static
final
byte
[] objectToBytes(Serializable s)
throws
IOException
{
ByteArrayOutputStream out
=
new
ByteArrayOutputStream();
ObjectOutputStream ot
=
new
ObjectOutputStream(out);
ot.writeObject(s);
ot.flush();
ot.close();
return
out.toByteArray();
}
public
static
final
String objectToHexString(Serializable s)
throws
IOException
{
return
bytesToHexString(objectToBytes(s));
}
public
static
final
Object hexStringToObject(String hex)
throws
IOException, ClassNotFoundException
{
return
bytesToObject(hexStringToByte(hex));
}
/** */
/**
* @函數(shù)功能: BCD碼轉(zhuǎn)為10進(jìn)制串(阿拉伯?dāng)?shù)據(jù))
* @輸入?yún)?shù): BCD碼
* @輸出結(jié)果: 10進(jìn)制串
*/
public
static
String bcd2Str(
byte
[] bytes)
{
StringBuffer temp
=
new
StringBuffer(bytes.length
*
2
);
for
(
int
i
=
0
;i
<
bytes.length;i
++
)
{
temp.append((
byte
)((bytes[i]
&
0xf0
)
>>>
4
));
temp.append((
byte
)(bytes[i]
&
0x0f
));
}
return
temp.toString().substring(
0
,
1
).equalsIgnoreCase(
"
0
"
)
?
temp.toString().substring(
1
):temp.toString();
}
/** */
/**
* @函數(shù)功能: 10進(jìn)制串轉(zhuǎn)為BCD碼
* @輸入?yún)?shù): 10進(jìn)制串
* @輸出結(jié)果: BCD碼
*/
public
static
byte
[] str2Bcd(String asc)
{
int
len
=
asc.length();
int
mod
=
len
%
2
;
if
(mod
!=
0
)
{
asc
=
"
0
"
+
asc;
len
=
asc.length();
}
byte
abt[]
=
new
byte
[len];
if
(len
>=
2
)
{
len
=
len
/
2
;
}
byte
bbt[]
=
new
byte
[len];
abt
=
asc.getBytes();
int
j, k;
for
(
int
p
=
0
; p
<
asc.length()
/
2
; p
++
)
{
if
( (abt[
2
*
p]
>=
'
0
'
)
&&
(abt[
2
*
p]
<=
'
9
'
))
{
j
=
abt[
2
*
p]
-
'
0
'
;
}
else
if
( (abt[
2
*
p]
>=
'
a
'
)
&&
(abt[
2
*
p]
<=
'
z
'
))
{
j
=
abt[
2
*
p]
-
'
a
'
+
0x0a
;
}
else
{
j
=
abt[
2
*
p]
-
'
A
'
+
0x0a
;
}
if
( (abt[
2
*
p
+
1
]
>=
'
0
'
)
&&
(abt[
2
*
p
+
1
]
<=
'
9
'
))
{
k
=
abt[
2
*
p
+
1
]
-
'
0
'
;
}
else
if
( (abt[
2
*
p
+
1
]
>=
'
a
'
)
&&
(abt[
2
*
p
+
1
]
<=
'
z
'
))
{
k
=
abt[
2
*
p
+
1
]
-
'
a
'
+
0x0a
;
}
else
{
k
=
abt[
2
*
p
+
1
]
-
'
A
'
+
0x0a
;
}
int
a
=
(j
<<
4
)
+
k;
byte
b
=
(
byte
) a;
bbt[p]
=
b;
}
return
bbt;
}
/** */
/**
* @函數(shù)功能: BCD碼轉(zhuǎn)ASC碼
* @輸入?yún)?shù): BCD串
* @輸出結(jié)果: ASC碼
*/
public
static
String BCD2ASC(
byte
[] bytes)
{
StringBuffer temp
=
new
StringBuffer(bytes.length
*
2
);
for
(
int
i
=
0
; i
<
bytes.length; i
++
)
{
int
h
=
((bytes[i]
&
0xf0
)
>>>
4
);
int
l
=
(bytes[i]
&
0x0f
);
temp.append(BToA[h]).append( BToA[l]);
}
return
temp.toString() ;
}
/** */
/**
* MD5加密字符串,返回加密后的16進(jìn)制字符串
*
@param
origin
*
@return
*/
public
static
String MD5EncodeToHex(String origin)
{
return
bytesToHexString(MD5Encode(origin));
}
/** */
/**
* MD5加密字符串,返回加密后的字節(jié)數(shù)組
*
@param
origin
*
@return
*/
public
static
byte
[] MD5Encode(String origin)
{
return
MD5Encode(origin.getBytes());
}
/** */
/**
* MD5加密字節(jié)數(shù)組,返回加密后的字節(jié)數(shù)組
*
@param
bytes
*
@return
*/
public
static
byte
[] MD5Encode(
byte
[] bytes)
{
MessageDigest md
=
null
;
try
{
md
=
MessageDigest.getInstance(
"
MD5
"
);
return
md.digest(bytes);
}
catch
(NoSuchAlgorithmException e)
{
e.printStackTrace();
return
new
byte
[
0
];
}
}
//
關(guān)于byte: signed byte 把 0x00 ~ 0xff 映射成范圍 0~127和 -128~-1 兩段,比較簡單的辦法用 (b+256)%256的辦法令其值回到0~255,或者用&0xff并賦給一個(gè)int。參考http:
//
www.jsfsoft.com:8080/beyond-pebble/pinxue/2006/08/23/1156309692525.html
posted on 2007-08-27 11:02
當(dāng)扎瓦
閱讀(4772)
評論(1)
編輯
收藏
評論
#
re: java二進(jìn)制,字節(jié)數(shù)組,字符,十六進(jìn)制,BCD編碼轉(zhuǎn)換 (轉(zhuǎn))
2013-04-12 19:38
Yakov
誤人子弟!~~
String s= "c20ad4d76fe97759aa27a0c99bff6710";
System.out.println(s);
System.out.println(bytesToHexString(hexStringToByte(s)));
試試這段代碼,就知道完全不正確!~
回復(fù)
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
Powered by:
BlogJava
Copyright © 當(dāng)扎瓦
<
2013年4月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
統(tǒng)計(jì)
隨筆 - 20
文章 - 3
評論 - 8
引用 - 0
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(2)
給我留言
查看公開留言
查看私人留言
隨筆檔案
2007年9月 (12)
2007年8月 (8)
文章分類
Hibernate
(rss)
Java Basic
(rss)
Spring(3)
(rss)
Struts(1)
(rss)
文章檔案
2007年8月 (3)
搜索
最新評論
1.?re: java二進(jìn)制,字節(jié)數(shù)組,字符,十六進(jìn)制,BCD編碼轉(zhuǎn)換 (轉(zhuǎn))
評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--Yakov
2.?re: Java 通過串口發(fā)短信1(轉(zhuǎn))[未登錄]
Good , thank you ,
I have found for it for a long time
--kenny
3.?re: Java 通過串口發(fā)短信2(轉(zhuǎn))
評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--kingstone
4.?re: struts中Action是非線程安全的!
singleton默認(rèn)就是true的啊
--guest
5.?re: Java 通過串口發(fā)短信2(轉(zhuǎn))
我就照你的方法做的,還是不能發(fā),能幫我看看嗎
我的qq:414638049,謝了
--begin
閱讀排行榜
1.?java二進(jìn)制,字節(jié)數(shù)組,字符,十六進(jìn)制,BCD編碼轉(zhuǎn)換 (轉(zhuǎn))(4772)
2.?Java 通過串口發(fā)短信1(轉(zhuǎn))(1858)
3.?Java 通過串口發(fā)短信2(轉(zhuǎn))(1323)
4.?JAVA面試題(994)
5.?Hibernate-Criteria Query 轉(zhuǎn)(551)
評論排行榜
1.?Java 通過串口發(fā)短信1(轉(zhuǎn))(3)
2.?Java 通過串口發(fā)短信2(轉(zhuǎn))(2)
3.?java二進(jìn)制,字節(jié)數(shù)組,字符,十六進(jìn)制,BCD編碼轉(zhuǎn)換 (轉(zhuǎn))(1)
4.?JAVA面試題(1)
5.?struts的action是非線程安全的(0)
主站蜘蛛池模板:
铜山县
|
高碑店市
|
荆州市
|
山东
|
甘泉县
|
荣成市
|
翼城县
|
当雄县
|
大渡口区
|
清苑县
|
临汾市
|
寻乌县
|
利辛县
|
宁乡县
|
姚安县
|
吴忠市
|
博湖县
|
嵊州市
|
德兴市
|
西乌
|
萨迦县
|
璧山县
|
瑞昌市
|
沙田区
|
资中县
|
沾化县
|
宁国市
|
兰溪市
|
昌黎县
|
晴隆县
|
抚远县
|
麻江县
|
通州区
|
洪雅县
|
昌图县
|
宜昌市
|
凌云县
|
开远市
|
甘孜县
|
盈江县
|
都兰县
|