1. 程式人生 > >【指令碼語言】RINGO JS-模組 binary

【指令碼語言】RINGO JS-模組 binary

模組 binary

在處理網路套接字或二進位制檔案時,需要讀取和寫入位元組流。 JavaScript 本身並不提供二進位制資料的本地表示,所以這個模組提供了兩個類來解決這個缺點。 實施遵循 CommonJS Binary/B 提案。

ByteArray 實現了可修改和可調整大小的位元組緩衝區。

ByteString 實現一個不可變的位元組序列。

兩個類共享一個通用的基類 Binary。 基類不能被例項化。 它僅用於確認 Binary 的 ByteString 和 ByteArray

 例項。

當傳遞給需要 byte[] 的 Java 方法時,這些類的例項會自動解包。

Example

// raw network streams only accept Binary as input
var stream = socket.getStream();
stream.write(new ByteArray([0xFA, 0xF0, 0x10, 0x58, 0xFF]));

// network protocols like HTTP/1.1 require ASCII
const CRLF = new ByteString("\r\n", "ASCII");
const EMPTY_LINE = new ByteString("\r\n\r\n", "ASCII");

// saves a java.security.Key to a file;
// the method getEncoded() returns a Java byte[]
fs.write("id_dsa.pub", ByteArray.wrap(publicKey.getEncoded()));

// Generates a salt for hashing
var random = java.security.SecureRandom.getInstance("SHA1PRNG");
var salt = new ByteArray(8);
random.nextBytes(salt); // fills up salt with random bytes