mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
Merge remote-tracking branch 'origin/v5-dev' into v5-dev
# Conflicts: # hutool-core/src/main/java/cn/hutool/core/util/RadixUtil.java
This commit is contained in:
commit
c03f62b4db
@ -3,10 +3,14 @@
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
|
||||
# 5.7.4 (2021-06-30)
|
||||
# 5.7.4 (2021-07-02)
|
||||
|
||||
### 🐣新特性
|
||||
* 【crypto 】 SmUtil.sm4统一返回类型(issue#I3YKD4@Gitee)
|
||||
* 【core 】 修改MapUtil.get传入null返回默认值而非null(issue#I3YKBC@Gitee)
|
||||
|
||||
### 🐞Bug修复
|
||||
* 【core 】 修复RadixUtil.decode非static问题(issue#I3YPEH@Gitee)
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
@ -1186,7 +1186,7 @@ public class MapUtil {
|
||||
* @since 5.3.11
|
||||
*/
|
||||
public static <T> T get(Map<?, ?> map, Object key, Class<T> type, T defaultValue) {
|
||||
return null == map ? null : Convert.convert(type, map.get(key), defaultValue);
|
||||
return null == map ? defaultValue : Convert.convert(type, map.get(key), defaultValue);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1201,7 +1201,7 @@ public class MapUtil {
|
||||
* @since 5.5.3
|
||||
*/
|
||||
public static <T> T getQuietly(Map<?, ?> map, Object key, Class<T> type, T defaultValue) {
|
||||
return null == map ? null : Convert.convertQuietly(type, map.get(key), defaultValue);
|
||||
return null == map ? defaultValue : Convert.convertQuietly(type, map.get(key), defaultValue);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1230,7 +1230,7 @@ public class MapUtil {
|
||||
* @since 5.3.11
|
||||
*/
|
||||
public static <T> T get(Map<?, ?> map, Object key, TypeReference<T> type, T defaultValue) {
|
||||
return null == map ? null : Convert.convert(type, map.get(key), defaultValue);
|
||||
return null == map ? defaultValue : Convert.convert(type, map.get(key), defaultValue);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1245,7 +1245,7 @@ public class MapUtil {
|
||||
* @since 5.5.3
|
||||
*/
|
||||
public static <T> T getQuietly(Map<?, ?> map, Object key, TypeReference<T> type, T defaultValue) {
|
||||
return null == map ? null : Convert.convertQuietly(type, map.get(key), defaultValue);
|
||||
return null == map ? defaultValue : Convert.convertQuietly(type, map.get(key), defaultValue);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -51,7 +51,7 @@ public class RadixUtil {
|
||||
* @param num 要转换的数值
|
||||
* @return 自定义进制字符串
|
||||
*/
|
||||
public static String encode(final String radixs, final int num) {
|
||||
public static String encode(String radixs, int num) {
|
||||
//考虑到负数问题
|
||||
long tmpNum = (num >= 0 ? num : (0x100000000L - (~num + 1)));
|
||||
return encode(radixs, tmpNum, 32);
|
||||
@ -64,7 +64,7 @@ public class RadixUtil {
|
||||
* @param num 要转换的数值
|
||||
* @return 自定义进制字符串
|
||||
*/
|
||||
public static String encode(final String radixs, final long num) {
|
||||
public static String encode(String radixs, long num) {
|
||||
if (num < 0) {
|
||||
throw new RuntimeException("暂不支持负数!");
|
||||
}
|
||||
@ -72,7 +72,38 @@ public class RadixUtil {
|
||||
return encode(radixs, num, 64);
|
||||
}
|
||||
|
||||
private static String encode(final String radixs, long num, int maxLength) {
|
||||
/**
|
||||
* 把转换后的进制字符还原成int 值
|
||||
*
|
||||
* @param radixs 自定进制,需要和encode的保持一致
|
||||
* @param encodeStr 需要转换成十进制的字符串
|
||||
* @return int
|
||||
*/
|
||||
public static int decodeToInt(String radixs, String encodeStr) {
|
||||
//还原负数
|
||||
return (int) decode(radixs, encodeStr);
|
||||
}
|
||||
|
||||
/**
|
||||
* 把转换后进制的字符还原成long 值
|
||||
*
|
||||
* @param radixs 自定进制,需要和encode的保持一致
|
||||
* @param encodeStr 需要转换成十进制的字符串
|
||||
* @return long
|
||||
*/
|
||||
public static long decode(String radixs, String encodeStr) {
|
||||
//目标是多少进制
|
||||
int rl = radixs.length();
|
||||
long res = 0L;
|
||||
|
||||
for (char c : encodeStr.toCharArray()) {
|
||||
res = res * rl + radixs.indexOf(c);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------- Private methods
|
||||
private static String encode(String radixs, long num, int maxLength) {
|
||||
if (radixs.length() < 2) {
|
||||
throw new RuntimeException("自定义进制最少两个字符哦!");
|
||||
}
|
||||
@ -92,34 +123,4 @@ public class RadixUtil {
|
||||
//去掉前面的字符串,trim比较耗时
|
||||
return new String(aa, i, aa.length - i);
|
||||
}
|
||||
|
||||
/**
|
||||
* 把转换后的进制字符还原成int 值
|
||||
*
|
||||
* @param radixs 自定进制,需要和encode的保持一致
|
||||
* @param encodeStr 需要转换成十进制的字符串
|
||||
* @return int
|
||||
*/
|
||||
public static int decodeToInt(final String radixs, final String encodeStr) {
|
||||
//还原负数
|
||||
return (int) decode(radixs, encodeStr);
|
||||
}
|
||||
|
||||
/**
|
||||
* 把转换后进制的字符还原成long 值
|
||||
*
|
||||
* @param radixs 自定进制,需要和encode的保持一致
|
||||
* @param encodeStr 需要转换成十进制的字符串
|
||||
* @return long
|
||||
*/
|
||||
public static long decode(final String radixs, final String encodeStr) {
|
||||
//目标是多少进制
|
||||
int rl = radixs.length();
|
||||
long res = 0L;
|
||||
|
||||
for (char c : encodeStr.toCharArray()) {
|
||||
res = res * rl + radixs.indexOf(c);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
@ -188,9 +188,9 @@ public class SmUtil {
|
||||
* </pre>
|
||||
*
|
||||
* @param key 密钥
|
||||
* @return {@link SymmetricCrypto}
|
||||
* @return {@link SM4}
|
||||
*/
|
||||
public static SymmetricCrypto sm4(byte[] key) {
|
||||
public static SM4 sm4(byte[] key) {
|
||||
return new SM4(key);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user