模块 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