Rust数据类型与内存计算

本文介绍了Rust编程语言中的不同数据类型,包括字节、位、无符号和有符号整数、动态取值范围类型、浮点数,以及字面量和类型后缀的使用。重点讲解了字符串和字节序列之间的转换方法。
摘要由CSDN通过智能技术生成

计算机存储单位

  1. 字节和位: 一个英文字母通常占用一个字节(8位),这是因为大多数现代编码系统(如UTF-8)使用一个字节来表示一个字符。
  2. 存储单位换算:
    • 1MB (兆字节) = 1024KB (千字节)
    • 1KB = 1024字节
    • 1MB = 1024 × 1024 = 1,048,576字节
    • 1GB (吉字节) = 1,073,741,824字节

Rust编程语言中的数字类型

  1. 无符号整数 (u8, u16, u32, u64, u128):
    • 这些类型用于存储非负整数。
    • 它们的数值范围和所占用的字节数分别是:
      • u8: 0 - 2^8 - 1 (1字节)
      • u16: 0 - 2^16 - 1 (2字节)
      • u32: 0 - 2^32 - 1 (4字节)
      • u64: 0 - 2^64 - 1 (8字节)
      • u128: 0 - 2^128 - 1 (16字节)
  2. 符号整数 (i8, i16, i32, i64, i128):
    • 这些类型用于存储有符号整数,即可以为正也可以为负。
    • 它们的数值范围和所占用的字节数分别是:
      • i8: -2^7 - 2^7 - 1 (1字节)
      • i16: -2^15 - 2^15 - 1 (2字节)
      • i32: -2^31 - 2^31 - 1 (4字节)
      • i64: -2^63 - 2^63 - 1 (8字节)
      • i128: -2^127 - 2^127 - 1 (16字节)
  3. 动态取值范围类型 (usize, isize):
    • 这些类型的取值范围取决于机器的字长(32位或64位)。
    • usize和isize分别用于存储内存地址和内存偏移量。
    • 它们的取值范围和所占用的字节数分别是:
      • usize: 0 - 2^32 - 1 或 0 - 2^64 - 1 (4或8字节)
      • isize: -2^31 - 2^31 - 1 或 -2^63 - 2^63 - 1 (4或8字节)
  4. 浮点数类型 (f32, f64):
    • 这些类型用于存储浮点数,即小数。
    • 它们的位数和数值范围分别是:
      • f32: 单精度32位浮点数,至少6位有效数字
      • f64: 双精度64位浮点数,至少15位有效数字

Rust中的字面量和类型后缀

  • 在Rust中,可以在数字字面量后面直接加上类型后缀来指定类型,例如42u32表示一个u32类型的数值。
  • 如果不加指定类型,编译器会默认推断为i32类型。
  • 十六进制、八进制和二进制字面量分别以0x0o0b开头。
  • 还可以使用字节字面量,例如b'*',它等价于数值42u8

数据类型转换

  • 字符串和字节序列之间的转换在Rust中非常常见,可以使用各种方法来实现这些转换,例如:
    • String::from(s)s.to_string()s.to_owned() 可以将&str转换为String
    • s.as_bytes() 可以将&str转换为&[u8]
    • s.as_bytes().to_vec()s.as_bytes().to_owned() 可以将&str转换为Vec<u8>
    • &s 如果可能,可以使用&s来转换String&str;否则使用s.as_str()
    • s.into_bytes() 可以将String转换为Vec<u8>
    • s.to_vec()s.to_owned() 可以将&[u8]转换为String,但要注意这需要字符串是有效的UTF-8编码。
    • String::from_utf8(s).unwrap() 可以将&[u8]转换为String,但这通常不是一个安全的做法,因为它假设数据是有效的UTF-8编码,如果数据不是有效的UTF-8,这将引发错误。
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知来者逆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值