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();
        }
    }
}
相关推荐
编啊编程啊程3 小时前
JUC之AQS
java·开发语言·jvm·c++·kafka
壹Y.6 小时前
非线性规划学习笔记
学习·数学建模
好学且牛逼的马6 小时前
GOLANG 接口
开发语言·golang
ahauedu6 小时前
AI资深 Java 研发专家系统解析Java 中常见的 Queue实现类
java·开发语言·中间件
韭菜钟6 小时前
在Qt中用cmake实现类似pri文件的功能
开发语言·qt·系统架构
项目題供诗6 小时前
React学习(十二)
javascript·学习·react.js
闲人编程6 小时前
Python第三方库IPFS-API使用详解:构建去中心化应用的完整指南
开发语言·python·去中心化·内存·寻址·存储·ipfs
艾莉丝努力练剑7 小时前
【C语言16天强化训练】从基础入门到进阶:Day 7
java·c语言·学习·算法
CTRA王大大7 小时前
【golang】制作linux环境+golang的Dockerfile | 如何下载golang镜像源
linux·开发语言·docker·golang
自强的小白8 小时前
学习Java24天
java·学习