Skip to content

Commit dd26ebd

Browse files
committed
Merge branch 'master' of https://github.com/andysim3d/stackoverflow-java-top-qa into andysim3d-master
# Conflicts: # contents/lookup-enum-by-string-value.md
1 parent 0c8be56 commit dd26ebd

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed
+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
##如何计算MD5值
2+
3+
###问题
4+
Java中有没有方法可以计算一个String的MD5值?
5+
6+
7+
###回答
8+
你可以用 ```MessageDigest``` 的MD5实例来计算String的MD5值。
9+
10+
使用 ```MessageDigest``` 和 String 时,一定要显式声明你的数据编码类型。如果你使用无参的 ```String.getBytes()``` , 它会以当前平台的默认编码来转换数据。不同平台的默认编码可能是不同的,这可能会导致你的数据不一致。
11+
12+
``` java
13+
import java.security.*;
14+
15+
..
16+
17+
byte[] bytesOfMessage = yourString.getBytes("UTF-8");
18+
MessageDigest md = MessageDigest.getInstance("MD5");
19+
byte[] thedigest = md.digest(bytesOfMessage);
20+
```
21+
22+
如果你的要计算的数据量很大,你可以循环使用 ```.update(byte[])``` 方法来加载数据。加载完毕后用 ```.digest()``` 方法来得到计算出的MD5值。
23+
24+
stackoverflow链接
25+
http://stackoverflow.com/questions/415953/how-can-i-generate-an-md5-hash

contents/lookup-enum-by-string-value.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public static <T extends Enum<T>> T getEnumFromString(Class<T> c, String string)
8383
public static MyEnum fromString(String name) {
8484
return getEnumFromString(MyEnum.class, name);
8585
}
86-
```
86+
```
8787
如果的enums不是全部大写,只需要修改 `Enum.valueOf` 这一行。
8888
很遗憾,我不能使用 `T.class` 传给 `Enum.valueOf`,因为 `T`会被擦出。
8989

@@ -100,7 +100,7 @@ _完整方法签名 `Optional<T> getIfPresent(Class<T> enumClass, String value)`
100100

101101
---
102102
_其他的答案都大同小异,感兴趣的可以看原帖_
103-
_原帖:[Convert a String to an enum in Java](http://stackoverflow.com/questions/604424/lookup-enum-by-string-value)_
103+
stackoverflow链接
104+
http://stackoverflow.com/questions/604424/lookup-enum-by-string-value
104105
_译者:[MagicWolf](https://github.com/DaiDongLiang)_
105106

106-

0 commit comments

Comments
 (0)