diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/io/Bytes.java b/dubbo-common/src/main/java/org/apache/dubbo/common/io/Bytes.java index 263e7b9f67..5112dcf73a 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/io/Bytes.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/io/Bytes.java @@ -730,8 +730,12 @@ public class Bytes { char pc = code[64]; if (str.charAt(off + len - 2) == pc) { size -= 2; + --num; + rem = 2; } else if (str.charAt(off + len - 1) == pc) { size--; + --num; + rem = 3; } } else { if (rem == 2) { diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/io/BytesTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/io/BytesTest.java index 71b915c1e4..cae1a834ce 100644 --- a/dubbo-common/src/test/java/org/apache/dubbo/common/io/BytesTest.java +++ b/dubbo-common/src/test/java/org/apache/dubbo/common/io/BytesTest.java @@ -90,6 +90,14 @@ public class BytesTest { assertThat(bytes2, is(out2)); } + @Test + public void testBase642bCharArrCall() { + byte[] stringCall = Bytes.base642bytes("ZHViYm8=", C64); + byte[] charArrCall = Bytes.base642bytes("ZHViYm8=", C64.toCharArray()); + + assertThat(stringCall, is(charArrCall)); + } + @Test public void testHex() { String str = Bytes.bytes2hex(b1);