將一段加密的JavaScript代碼轉換為JAVA版。 JavaScript中的某一段代碼: 前期查看了整個JavaScript代碼,發現代碼中,方法里面嵌套方法,各種不合規的變量名,導致開始就懷疑到底是否能夠翻譯成功,很想放棄 中期決定按照整個JavaScript的代碼結構,重頭開始翻譯。 后期完成對整個JavaScript的翻譯,編寫測試方法,結合Java調試和JavaScript調試,讓兩個語言的測試結果達到一致
總結Java與JavaScript中差異: 1。JavaScript中if判斷的條件可以不是boolean類型,對于int的類型,非0就是true,0就是false。既Java中可以通過 int a = 1; if(a!=0) 來代替Javascript中的if(a) 2。JavaScript中的parseInt("12",10)對應Java的Integer.parseInt("12",10)方法 3。JavaScript獲得數值的二進制: str1.charAt(i).charCodeAt().toString(2) Java中獲得數值的二進制:Integer.toBinaryString((int)str1.charAt(i)) 4。JavaScript中直接在空白處調用函數初始化,Java中必須定義在static塊中進行初始化 5。JavaScript中String.fromCharCode獲得數值對應的Unicode字符,Java中通過Character.toChars()獲得數組,不過傳入的是一個數組,所以需要轉換成字符串,通過String.valueOf()方法 6。JavaScript中的Math.ceil(bits/bpe)函數,bits/bpe如果除不盡會有小數,但是在JAVA中兩個整數相除不會有小數(余數),所以需要把其中一參數改成double類型再進行相除,Math.ceil(((double) bits / bpe)
JS函數: 改造后的Java函數:
第二種方案構思: 通過Java的第三方支持或者Jar調用JavaScript函數實現: 大致思路:1。讀取JavaScript文件,2。構建JavaScript環境(類似于瀏覽器編譯腳本),3。執行函數返回結果。
|