您已發佈的將是Scala代碼等效的Java代碼:
String test = Base64.encodeBase64("hello".getBytes()).toString();
String test2 = Base64.encodeBase64("hello".getBytes()).toString();
String test3 = Base64.encodeBase64("hello".getBytes()).toString();
這將打印byte[]
數組對象的toString()
每個Base64.encodeBase64("hello".getBytes())
這將是不同的對象,因此將不同的輸出到控制檯。它執行Object
類的toString()方法,根據Javadocs的說法:
返回對象的字符串表示形式。
類Object的toString方法返回一個字符串,其中包含對象爲實例的類的名稱,符號字符「@」和哈希碼的無符號十六進制表示形式目的。
要得到正確的String
表示法,請使用Arrays.toString()方法。樣品Java代碼以打印正確的結果如下:
String test = Arrays.toString(Base64.encodeBase64("hello".getBytes()));
String test2 = Arrays.toString(Base64.encodeBase64("hello".getBytes()));
String test3 = Arrays.toString(Base64.encodeBase64("hello".getBytes()));
啊!這是我在字節數組上濫用Array.toString! D'哦!謝謝:) –
只是一個提示:不要在沒有指定編碼的情況下在字符串上使用getBytes() - 特別是當您將它轉移到另一個系統時(可能是在執行base64編碼時)。否則,如果base64encoding和base64decoding發生的機器的默認編碼不同,您可能會遇到問題。 – mschenk74
在Scala中做這件事的一個簡單的方法是'.toList.toString',列表總是打印它的內容而不是參考。 – pedrofurla