std.bytes
API summary (generated from the Beans source by npm run coverage): 6 package functions.
std.bytes builtin Bytes বাফারের উপর একটা CRC-32
checksum আর unsigned varint helper যোগ করে। এটা Beans দিয়ে লেখা; পড়ুন
stdlib/std/bytes/bytes.b-তে।
import std.bytesএকটা varint হলো একটা integer জমা রাখার একটা compact উপায়, ছোট value-র জন্য কম byte লাগে। এখানে unsigned রূপটা হলো LEB128।
Checksum
“Checksum” সেকশনpub fn crc32(data: Bytes) -> u32crc32হলো IEEE CRC-32 checksum, polynomial0xedb88320ব্যবহার করে।
Unsigned varint
“Unsigned varint” সেকশনpub fn uvarint_size(value: u64) -> intpub fn encode_uvarint(value: u64) -> Bytespub fn append_uvarint(data: Bytes, value: u64)pub fn decode_uvarint(data: Bytes) -> Option<u64>pub fn decode_uvarint_at_or(data: Bytes, start: int, fallback: u64) -> u64uvarint_sizeজানায় unsigned varint হিসেবেvalue-এর কয় byte লাগবে।encode_uvarintএকটা নতুন বাফার ফেরত দেয় যেটাতেvalueunsigned varint হিসেবে থাকে।append_uvarintvalue-কে varint হিসেবেdata-এর শেষে জায়গামতো যোগ করে, আর কিছু ফেরত দেয় না।decode_uvarintdata-এর শুরু থেকে একটা varint পড়ে। data যদি কাটা পড়ে থাকে বা value 64 bit ছাড়িয়ে যায়, তাহলেnoneফেরত দেয়, আর এটা বড়জোর 10 byte পড়ে।decode_uvarint_at_orstartথেকে শুরু করে একটা varint পড়ে।startrange-এর বাইরে হলে, অথবা value কাটা পড়লে বা ছাড়িয়ে গেলেfallbackফেরত দেয়।
import std.ioimport std.bytes
fn main() { let buf: Bytes = bytes.encode_uvarint(300) io.println(buf.len()) // 2 let value: Option<u64> = bytes.decode_uvarint(buf) io.println(value) // some(300) io.println(bytes.crc32(Bytes.from("hello")))}আরও দেখুন
“আরও দেখুন” সেকশন- Bytes — বাফার type, যার নিজেরও
crc32আরappend_uvarintmethod আছে। - std.encoding.binary — fixed-width আর varint read-write করার আরও পূর্ণ একটা সেট।