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)換為對(duì)象
*
@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;
}
/** */
/**
* 把可序列化對(duì)象轉(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)扎瓦
閱讀(4771)
評(píng)論(1)
編輯
收藏
評(píng)論
#
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ù)
更多評(píng)論
新用戶注冊
刷新評(píng)論列表
只有注冊用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
Powered by:
BlogJava
Copyright © 當(dāng)扎瓦
<
2007年8月
>
日
一
二
三
四
五
六
29
30
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
31
1
2
3
4
5
6
7
8
統(tǒng)計(jì)
隨筆 - 20
文章 - 3
評(píng)論 - 8
引用 - 0
常用鏈接
我的隨筆
我的評(píng)論
我的參與
最新評(píng)論
留言簿
(2)
給我留言
查看公開留言
查看私人留言
隨筆檔案
2007年9月 (12)
2007年8月 (8)
文章分類
Hibernate
(rss)
Java Basic
(rss)
Spring(3)
(rss)
Struts(1)
(rss)
文章檔案
2007年8月 (3)
搜索
最新評(píng)論
1.?re: java二進(jìn)制,字節(jié)數(shù)組,字符,十六進(jìn)制,BCD編碼轉(zhuǎn)換 (轉(zhuǎn))
評(píng)論內(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))
評(píng)論內(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))(4771)
2.?Java 通過串口發(fā)短信1(轉(zhuǎn))(1857)
3.?Java 通過串口發(fā)短信2(轉(zhuǎn))(1322)
4.?JAVA面試題(993)
5.?Hibernate-Criteria Query 轉(zhuǎn)(550)
評(píng)論排行榜
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)
主站蜘蛛池模板:
墨玉县
|
衢州市
|
象州县
|
静乐县
|
舟山市
|
宜君县
|
故城县
|
双流县
|
思南县
|
巴塘县
|
华坪县
|
隆林
|
营口市
|
微山县
|
新乡县
|
高州市
|
巴东县
|
马关县
|
张家界市
|
聂拉木县
|
博罗县
|
苍南县
|
富川
|
贵溪市
|
汉阴县
|
南漳县
|
陵水
|
苍山县
|
陵川县
|
邵东县
|
平罗县
|
鹿邑县
|
嘉义县
|
漯河市
|
阆中市
|
黔东
|
珲春市
|
台前县
|
公安县
|
民权县
|
崇仁县
|