第三 字节

字节(Byte) 是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。

计量单位

我们常见的十进制数字的计量单位有:个、十、百、千、万、亿,比亿还大的单位有:兆、京、垓、秭、穰、沟、涧、正、载、极。

二进制也有自己的计量单位。位(bit,Binary Digits):存放一位二进制数,即0或1,为最小的存储单位,8个二进制位为一个字节单位。更大的计量单位有KB、MB、GB、TB、PB、EB、ZB、YB、BB等。

二进制计量单位单位换算单位换算(科学计数法)十进制计量单位单位换算单位换算(科学计数法)
bbit(位)10的4次方
BByte(字节),1B=8b亿万万10的8次方
KB1KB=1024B2的10次方万亿10的12次方
MB1MB=1024KB2的20次方万兆10的16次方
GB1GB=1024MB2的30次方万京10的20次方
TB1TB=1024GB2的40次方万垓10的24次方
PB1PB=1024TB2的50次方万秭10的28次方
EB1EB=1024PB2的60次方万穰10的32次方
ZB1ZB=1024EB2的70次方万沟10的36次方
YB1YB=1024ZB2的80次方万涧10的40次方
BB1BB=1024YB2的90次方万正10的44次方
NB1NB=1024BB2的100次方万载10的48次方

字节顺序:大端与小端

多字节字段中的值是按照大末尾(big-endian)顺序规定的,具体来说就是最高位的字节出现在高位,而低位的字节出现在低位。

数据是按照小末尾(little-endian)顺序存储的,高位的字节出现在低位。

常用的两种常用字节编码/解码方式:Base64编码、Hex编码;

Base64编码&解码

    // &[u8;T]/String <=> Base64 String  <=> Vec<u8> <=> String

    let  common_base64_str = base64::encode("中文@123&");

    println!("common base64 string: {}", common_base64_str);

    let common_vecu8 = base64::decode(&common_base64_str).unwrap();

    println!("common string: {}", str::from_utf8(&common_vecu8).unwrap());

 

Hex编码&解码

 // 编码和解码十六进制

    let original = b"The quick brown fox jumps over the lazy dog.";

    let expected = "54686520717569636B2062726F776E20666F78206A756D7073206F76\

        657220746865206C617A7920646F672E";


    let encoded = HEXUPPER.encode(original);

    assert_eq!(encoded, expected);


    let decoded = HEXUPPER.decode(&encoded.into_bytes())?;

    assert_eq!(&decoded[..], &original[..]);

    println!("{}", str::from_utf8(&decoded).unwrap());


    let cn = HEXUPPER.encode("功成不必在我".as_bytes());

    println!("{}", cn);

 

大数据

大数据时代,如何低成本、快速地存储、检索、处理海量数据成为很多企业不得不面临的巨大难题。零拷贝、分布式文件系统、分布式数据库、数据挖掘等技术逐渐得到发展。Rust凭借自身内存安全、高性能的优势正在发挥更大的作用:Rust正被引入Linux内核;微软同样在使用Rust重写Windows内核;国产分布式数据库TiDB使用Rust开发核心的存储引擎TiKV。“Rust重写一切”堪称降本增效的一把利器。

MMAP

 #[test]

    fn mmap_mut() -> Result<(), Error> {

        use memmap::MmapMut;

        use std::fs::OpenOptions;

        use std::io::Write;

        use std::ops::DerefMut;

        use std::path::PathBuf;


        // let file = File::options().write(true).open("abcd.txt")?;


        let path: PathBuf = PathBuf::from("abcd.txt");

        let file = OpenOptions::new()

            .read(true)

            .write(true)

            .create(true)

            .open(&path)?;

        file.set_len(30)?;


        let mut mmap = unsafe { MmapMut::map_mut(&file)? };


        // mmap.copy_from_slice(b"Hello, world!");

        (&mut mmap[..]).write_all(b"Hello BeiJing! Hello, world!")?;

        mmap.flush()?;


        Ok(())

    }

 

mmap-sync Rust library for concurrent data access, using memory-mapped files, zero-copy deserialization, and wait-free synchronization.

SIMD

  • 17
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值