rust学习(字节数组转string)

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

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语言的思路,我添加了一个辅助类去转换,代码如下:

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/683106.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用框架思维学Java:集合概览

集合这个词,耳熟能详,从小学一年级开始,每天早上做操时都会听到这两个字: 高中数学又学习到了新的集合: 那么Java中的集合是什么呢? 一,前言 1,什么是Java集合 数学集合是Java集…

模式识别涉及的常用算法

一、线性回归 1.算法执行流程: 算法的执行流程可以简述如下: 导入必要的库: 导入NumPy库,用于数值计算。导入Matplotlib库,用于数据可视化。导入Pandas库,用于数据处理(尽管在这个例子中&#…

【Git】Git 的初识和安装

一、提出问题 不知道你工作或学习时,有没有遇到这样的情况:在编写各种文档时,为了防止文档丢失,更改失误,失误后能恢复到原来的版本,不得不复制出⼀个副本,比如: 设计文档v1设计文…

Python字符串操作详解(超详细)

Python字符串操作详解 目录 Python字符串操作详解一. 字符串创建二. 字符串拼接1. 使用 运算符2. 使用 .join() 方法 三. 字符串索引和切片1. 字符串索引2. 字符串切片3. 字符串长度和负索引4. 字符串不可变性 四. 字符串长度五. 字符串转换六. 查找子字符串七. 字符串替换八.…

xml创建模型组合体

XML创建模型组合体 创建步骤模型准备模型处理模型文件XML编写 效果 创建步骤 模型准备 CAD 提供的原始模型如下: 该模型存在的问题: 单位问题:CAD出图的是 mm 为单位,但是 mujoco 建模这边用的是以 m 为单位的;原点…

二刷算法训练营Day22 | 二叉树(8/9)

目录 详细布置: 1. 235. 二叉搜索树的最近公共祖先 2. 701. 二叉搜索树中的插入操作 3. 450. 删除二叉搜索树中的节点 详细布置: 1. 235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共…

onenet踩坑连接mqtt

一定注意这个version为默认 完整说明https://open.iot.10086.cn/doc/v5/fuse/detail/922 注意这里的的device是名称,不是id,最好产品开发那里就是都是一个名字

华安保险:核心系统分布式升级,提升保费规模处理能力2-3倍 | OceanBase企业案例

在3月20日的2024 OceanBase数据库城市行的活动中,安保险信息科技部总经理王在平发表了以“保险行业核心业务系统分布式架构实践”为主题的演讲。本文为该演讲的精彩回顾。 早在2019年,华安保险便开始与OceanBase接触,并着手进行数据库的升级…

spring boot3登录开发-2(3邮件验证码接口实现)

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 目录 写在前面 上文衔接 接口设计与实现 1.接口分析 2.实现思路 3.代码实现 1.定义验证码短信HTML模板枚举类 2.定义验证码业务接口 3. 验证码业务接口实现 4.控制层代码 4.测试 写…

三、Mapper XML的解析和注册使用

流程: 1.Resources加载MyBatis配置文件生成Reader字符流 2.SqlSessionFactoryBuilder开始引导构建SqlSessionFactory,包括两步: 第一步是在XMLConfigBuilder中使用dom4j解析xml文件,将解析的SQL包装成MappedStatement对象存入Con…

微信小程序-案例:本地生活-首页(不使用网络数据请求)

一、 1.页面效果: 二、 1.新建项目并添加页面 在app.json文件中: "pages": ["pages/home/home","pages/message/message","pages/contact/contact"] 2.配置导航栏效果 在app.json文件中: &quo…

Windows11系统 和Android 调试桥(Android Debug Bridge,ADB)工具安装,app抓取日志内容

文章目录 目录 文章目录 安装流程 小结 概要安装流程技术细节小结 概要 Android调试桥(ADB)是一种多功能命令行工具,它允许开发者与连接到计算机上的Android设备进行通信和控制。ADB工具的作用包括但不限于: 安装和卸载应用程序&…

Three.js中的Raycasting技术:实现3D场景交互事件的Raycaster详解

前言 在Web开发中,Three.js是一个极为强大的库,它让开发者能够轻松地在浏览器中创建和展示3D图形。随着3D技术在网页设计、游戏开发、数据可视化等领域的广泛应用,用户与3D场景的交互变得日益重要。而要实现这种交互,一个核心的技…

初识C++ · 反向迭代器简介

目录 前言 反向迭代器的实现 前言 继模拟实现了list和vector之后,我们对迭代器的印象也是加深了许多,但是我们实现的都是正向迭代器,还没有实现反向迭代器,那么为什么迟迟不实现呢?因为难吗?实际上还好。…

点击重置按钮清除el-table排序状态的高亮样式

需求&#xff1a;需要点击按钮的时候&#xff0c;清除掉el-table排序状态的高亮样式 解决方法&#xff1a;table添加ref"tableData",然后使用this.$refs.tableData.clearSort()。 <el-table:data"tableData"style"width: 100%":header-cell-s…

PHP实现抖音小程序用户登录获取openid

目录 第一步、抖音小程序前端使用tt.login获取code 第二步、前端拿到code传给后端 第三步、方法1 后端获取用户信息 第四步、方法2 抖音小程序拿到用户信息把用户信息传给后端 code2Session抖音小程序用户登录后端文档 第一步、抖音小程序前端使用tt.login获取code 前端 …

如何解决chatgpt出现503 bad gateway的问题

昨日&#xff0c;ChatGPT官网挂了&#xff0c;也就是使用web网页端访问的用户&#xff0c;会出现 bad gateway 情况。我们去ChatGPT官方的监控查看&#xff0c;已经展示相关错误。 影响的范围有&#xff1a; 影响了 ChatGPT 所有计划的所有用户。影响包括所有与 ChatGPT 相关…

Ubuntu22.04之解决:emacs无法输入中文问题(二百四十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

js 选择一个音频文件,绘制音频的波形,从右向左逐渐前进。

选择一个音频文件&#xff0c;绘制波形&#xff0c;从右向左逐渐前进。 完整代码&#xff1a; <template><div><input type"file" change"handleFileChange" accept"audio/*" /><button click"stopPlayback" :…

实战:Zig 编写高性能 Web 服务(2)

1.1 编写 HTTP server 我们从python -m http.server 8000启动得到灵感&#xff0c;先确定好目标&#xff1a; 编写一个HTTP/1.1 http serverzig version 0.12.0 使用zig init搭建项目的前置工作你先自行搭建好&#xff0c;不会的翻看前面铺垫的章节熟悉zig的项目结构。 关键…