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();
        }
    }
}
相关推荐
Evand J5 分钟前
【MATLAB例程】三维环境下,EKF融合INS与DVL的核心程序,用于惯导和速度传感器的数据融合滤波。附下载链接
开发语言·matlab
枫叶丹46 分钟前
【Qt开发】Qt系统(二)-> 事件分发器
c语言·开发语言·数据库·c++·qt·系统架构
独自破碎E14 分钟前
Leetcode1438绝对值不超过限制的最长连续子数组
java·开发语言·算法
東雪木25 分钟前
编程算法学习——数组与排序算法
学习·算法
澜莲花26 分钟前
python图色之opencv基础---验证码实战
开发语言·python·opencv
沐知全栈开发29 分钟前
Numpy 数组操作
开发语言
代码游侠29 分钟前
复习—sqlite基础
linux·网络·数据库·学习·sqlite
yaoxin5211231 小时前
279. Java Stream API - Stream 拼接的两种方式:concat() vs flatMap()
java·开发语言
@小码农1 小时前
202512 电子学会 Scratch图形化编程等级考试三级真题(附答案)
服务器·开发语言·数据结构·数据库·算法
坚持学习前端日记1 小时前
2025年的个人和学习年度总结以及未来期望
java·学习·程序人生·职场和发展·创业创新