diff --git a/utilcode/src/main/java/com/blankj/utilcode/util/EncodeUtils.java b/utilcode/src/main/java/com/blankj/utilcode/util/EncodeUtils.java index 8cae11466c..75619a8fa8 100644 --- a/utilcode/src/main/java/com/blankj/utilcode/util/EncodeUtils.java +++ b/utilcode/src/main/java/com/blankj/utilcode/util/EncodeUtils.java @@ -183,4 +183,34 @@ public static CharSequence htmlDecode(final String input) { return Html.fromHtml(input); } } + + /** + * Return the binary encoded string padded with one space + * + * @param input + * @return binary string + */ + public static String binEncode(final String input) { + StringBuilder stringBuilder = new StringBuilder(); + for (char i : input.toCharArray()) { + stringBuilder.append(Integer.toBinaryString(i)); + stringBuilder.append(' '); + } + return stringBuilder.toString(); + } + + /** + * Return UTF-8 String from binary + * + * @param input binary string + * @return UTF-8 String + */ + public static String binDecode(final String input){ + String[] splitted = input.split(" "); + StringBuilder sb = new StringBuilder(); + for(String i : splitted){ + sb.append(((char) Integer.parseInt(i.replace(" ", ""), 2))); + } + return sb.toString(); + } } diff --git a/utilcode/src/test/java/com/blankj/utilcode/util/EncodeUtilsTest.java b/utilcode/src/test/java/com/blankj/utilcode/util/EncodeUtilsTest.java index 6d17fa9075..34197c7d87 100644 --- a/utilcode/src/test/java/com/blankj/utilcode/util/EncodeUtilsTest.java +++ b/utilcode/src/test/java/com/blankj/utilcode/util/EncodeUtilsTest.java @@ -70,4 +70,10 @@ public void htmlEncode_htmlDecode() { assertEquals(html, EncodeUtils.htmlDecode(encodeHtml).toString()); } + @Test + public void binEncode_binDecode(){ + String test = "test"; + String binary = EncodeUtils.binEncode(test); + assertEquals("test", EncodeUtils.binDecode(binary)); + } } \ No newline at end of file