【有趣】這段java程式碼太古怪

小姐姐味道發表於2019-04-01

首先呢,來一段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原始碼,執行後列印小姐姐我愛你

【有趣】這段java程式碼太古怪

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

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

其實沒什麼神奇的,我們不過是將正常的原始碼翻譯成了unicode編碼方式。就是這段java程式碼。

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更冷門。

所以以下幾行python程式碼誕生了(僅用於python3):

#!/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檔案翻譯成我們所想要的。

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

是不是很簡單?

那改完的java檔案怎麼恢復呢?我只管編碼不管解碼,剩下的要靠自己啦,這可是瞭解unicode編碼的好機會。

碼農世界可能是太過寂寥,無聊的專案也是頻出。比如這個,判斷數字是不是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
複製程式碼

【有趣】這段java程式碼太古怪

相關文章