【有趣】這段java代碼太古怪

首先呢,來一段java代碼來開點胃。等等等等,耍我呢,這是java代碼?java

\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0063\u006c\u0061\u0073\u0073\u0020\u0058\u004a\u004a\u0020\u007b
\u0020\u0020\u0020\u0020\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0073\u0074\u0061\u0074\u0069\u0063\u0020\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0061\u0072\u0067\u0073\u0029\u0020\u007b
\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0022\u5c0f\u59d0\u59d0\u6211\u7231\u4f60\u0022\u0029\u003b
\u0020\u0020\u0020\u0020\u007d
\u007d
複製代碼

很是負責任的告訴你,是的!不信請看下圖。純純正正的java代碼,class爲XJJ的java源碼,執行後打印小姐姐我愛你python

仍是不信?自個兒拷貝下去執行一下。不過,IDEA是會報錯的,用命令行哦。git

好隱晦的表白方式,是暗戀麼?github

其實沒什麼神奇的,咱們不過是將正常的源代碼翻譯成了unicode編碼方式。就是這段java代碼。bash

private static String toUnicode(String str) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
    if (str.charAt(i) != '\n') {
        int cp = Character.codePointAt(str, i);
        int charCount = Character.charCount(cp);
        if (charCount > 1) {
            i += charCount - 1;
            if (i >= str.length()) {
                throw new IllegalArgumentException("truncated unexpectedly");
            }
        }
        sb.append(String.format("\\u%04x", cp));
    } else {
        sb.append("\n");
    }
}
return sb.toString();
}
複製代碼

耍到這裏,我忽然有了一個好主意。我要將個人java項目,所有編碼成這種方式,而後傳到github,嘿嘿。能編譯但不可讀,比base64更冷門。app

因此如下幾行python代碼誕生了(僅用於python3):ide

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
java = sys.argv[1]
s = sb = u""

with open(java, 'r' , encoding='utf-8') as f:
    s = f.read()   
for _c in s: 
    sb += '\\u%04x' % ord(_c)
    
with open(java, 'w' , encoding='utf-8') as f: 
    f.write(sb)

print(java)
複製代碼

在命令行中執行如下命令,將會將指定目錄(test)中的全部java文件翻譯成咱們所想要的。ui

find ./test | grep \\.java$  | xargs -I '{}' python3 uni.py {}
複製代碼

是否是很簡單?編碼

那改完的java文件怎麼恢復呢?我只管編碼無論解碼,剩下的要靠本身啦,這但是瞭解unicode編碼的好機會。spa

碼農世界多是太過寂寥,無聊的項目也是頻出。好比這個,判斷數字是否是13,居然接近4k星了。github.com/jezen/is-th…

貼上它的API感覺下來自碼農世界深深的空虛感吧。

var is = require('is-thirteen');
// Now with elegant syntax.

is(13).thirteen(); // true
is(12.8).roughly.thirteen(); // true
is(6).within(10).of.thirteen(); // true
is(2003).yearOfBirth(); // true

// check your math skillz
is(4).plus(5).thirteen();      // false
is(12).plus(1).thirteen();    // true
is(4).minus(12).thirteen();    // false
is(14).minus(1).thirteen();    // true
is(1).times(8).thirteen();    // false
is(26).divideby(2).thirteen();  //true
複製代碼

相關文章
相關標籤/搜索