rust学习(字节数组转string)

最新在写数据传输相关的操作,发现string一个有趣的现象,代码如下:

rust 复制代码
fn main() {
    let mut data:[u8;32] = [0;32];
    data[0] = 'a' as u8;
    
    let my_str1 = String::from_utf8_lossy(&data);
    let my_str = my_str1.trim();

    println!("my_str len is {},my_str is {}",my_str.len(),my_str);
}

哈哈,猜猜最后结果如何?

哈哈,字符串长度竟然是32..按照我们以前写C语言的习惯,字节数据从第二位开始都是0,照理应该算是终结符,所以字符串长度应该是1啊。哈哈。所以大家转换的时候一定要留意这个问题。为了按照C语言的思路,我添加了一个辅助类去转换,代码如下:

rust 复制代码
pub fn to_string(data:&[u8])->String {
    let ret = data.iter().position(|&value| value == 0);
    match ret {
        Some(index) => {
            if index == 0 {
                return String::from("");
            } else {
                return String::from_utf8(data[0..index].to_vec()).unwrap();
            }
        }
        None => {
            return String::from_utf8(data.to_vec()).unwrap();
        }
    }
}
相关推荐
A_aspectJ几秒前
Java开发的学习优势:稳定基石与多元可能并存的技术赛道
java·开发语言
qq_283720052 分钟前
Python 模块精讲:collections —— 高级数据结构深度解析(defaultdict、Counter、deque)
java·开发语言
chudonghao2 分钟前
[UE学习笔记][基于源码] 运行时网格 PMC / DMC / RMC
笔记·学习·ue5
wjs202413 分钟前
Chart.js 饼图指南
开发语言
YSF2017_318 分钟前
C语言-12-静态库制作
c语言·开发语言
kongba00721 分钟前
rules经验落盘
学习
一條狗23 分钟前
学习日报 20260423|[特殊字符] 深度解析:Vue 3 SPA 部署到 Spring Boot 的 404/500 错误排查与完美解决方案-2
vue.js·spring boot·学习
学习论之费曼学习法42 分钟前
AI 入门 30 天挑战 - Day 18 费曼学习法版 - 图像分割基础
人工智能·学习
圆山猫1 小时前
[AI] [Linux] 教我编一个启用rust的riscv kernel用于qemu启动
linux·ai·rust
It's Q1 小时前
hive学习分区&&函数
hive·hadoop·学习