MATLAB造轮子1_Str2Hex(脚本方式)

article/2025/9/30 19:54:39

0 前言

造轮子,最初应该来源于程序员圈子,可能很多非IT行业的人不是很了解,这里先简单说明一下。

轮子,是车的基础零部件。一般写程序的时候,轮子就是别人写好的工具,库,或者基础代码。造轮子,就是去实现这些基础的东西。

(图片来源:网络)

做一个工程项目时,为了效率和项目的整体进度计划,一般能使用成熟的、现成的,就会尽量使用。比如软件开发时,已经有大量成熟的工具、库函数,程序员一般都会优先使用;主机厂开发一款新车型,已经有成熟的零部件供应商,也会优先选择这些供应商的零部件...... 一来,成熟的工具、零部件,经过了大量验证,可靠性高;而且有现成的,也不用自己花大量时间去验证测试了。

但想使用成熟的、现成的工具或者基础代码等,一般都是需要付费的。而且,可能付费了之后,工具还不是开源的,或者给你个黑盒的零部件,你只能使用,却不知道里面的具体实现是什么样的。

所以,网络上就有了重复造轮子这个说法,自己来实现已有的、现成的功能。

虽然,最后实现出来的功能,可能比不上已有的,但造轮子的过程,你自己可以得到锻炼。而且,你想要什么样的轮子就造什么样的轮子,因为别人的轮子不一定适合自己的啊。

 

(图片来源:网络)

接下来,就简单聊聊我自己造的一个简单的轮子:Str2Hex。

 

1 问题来源

Str2Hex的这个想法,主要来源于工作中。

汽车上,有个唯一的“身份证号”:车架号。

官方术语:车辆识别码。

英文名称:Vehicle Identification Number,简称"VIN"。

(图片来源:网络)

这是一组由英文和数字组成的17位号码。跟身份证号码一样,车架号是唯一的,一辆车对应一个唯一的车架号。

那车架号对我们有什么作用? 比如买二手车时,我们可以查询车子是否是报废车,汽车的配置是否真实,发动机、变速箱等是否是原装的等等。

车架号,一般位于前挡风玻璃左下角,还有的在车子的门铰链柱,车架上也能看到。还有,在汽车的主要ECU控制器上,使用诊断仪设备也能读出来。

既然ECU控制器上能读出车架号,必然是要在出厂的时候或者4S店里能写入的。一般是在下线检测时,使用电检设备,对各个ECU控制器写入一系列的数据,包括车架号。

写入这些数据的时候,一般需要先将字母和数字的组合(ASCII码),转换成一堆16进制数,来写入。电检设备或诊断仪,内部都已经集成了这个功能。但一般测试试验车时,没有这些设备的时候,就只能自己通过设备和代码写入了。

之前的常规操作是,找个ASCII码表,寻找A-Z字母和1-9数字的对应16进制数,然后一个个转换后,写到一个文件,通过CAN设备写入控制器。

 

(图片来源:网络)

偶尔一两次这么操作还好,我还可以忍受。但随着需要测试的车辆增多,另外除了车架号需要写入,还有一些其他的数据也要写入,比如车型名称等等。

让我一个个去对照ASCII码,我的内心是拒绝的,这太浪费时间了…….

 

2 解决过程

然后,我就想到,使用代码来实现ASCII码和16进制数的转换过程。

最初的想法是,上网找找有没有现成的函数,来实现。可是上网找了一圈没找到MATLAB的函数,最后没办法,只能自己来写这个函数了。

其实功能很简单,用到的函数也就2个:

abs()dec2hex();

首先,先简单测试一下上面这两个函数,是否能实现我想要的功能。

 

可以看到,abs()将相应的字符转换成了10进制数,然后dec2hex()将10进制数转换成了16进制数,而且还能将一串字符串统一转换,这样还是比较方便的。

虽然最后结果是对的,但最终输出的是个5*2的char数组,不好复制拷贝。那就再加点内容,输出可以直接拷贝、满足自己格式要求的,自己造轮子,想输出什么格式就给你输出什么格式。

 

如上图,将转换的功能,写成了一个函数。函数里,通过一个for循环,对每个字符进行提取,中间加上逗号,然后使用strcat函数串联起来,最终输出一串可以直接用的代码。

另外,有些地方可能需要在16进制数前加上0x,那也可以通过以上代码,简单修改一下就能实现。感兴趣的朋友,可以去试试。

 

3 总结

关于这个简单的小功能,其实实现起来一点都不难,相关的函数也都比较基础,熟悉MATLAB的朋友应该都知道。或者上网搜一下关键词,也都能找到。

但如果网上没有搜到你想要的现成的函数、模块时,怎么办呢?我觉得可以这样来,先列出你的整体需求,然后一步步分解需求,一个个用简单的功能去实现。

另外,这个Str2Hex的功能,虽然用脚本已经实现了,但感觉还是差了点什么。如果有个人机交互界面,那就更好了。

这个需求,好像也不是很复杂,那就按照客户要求也加上吧。 

限于时间和篇幅,我们下次再讲~


另外,Str2Hex_(脚本方式) 源码已上传网盘,需要的朋友可以点击以下链接查看
Str2Hex脚本方式    提取码: 9mwk

更多MATLAB造轮子等相关文章,可扫码关注:汽车工程师日常 (qcgcsrc)


附录:

如果对车架号等内容有更多想了解的,可以查看以下链接 ,查看更多信息

https://www.douban.com/group/topic/127367158/

另外,还有一个车架号查询车子信息的网址,感兴趣的朋友可以查查自己的车架号 

http://www.17vin.com/


http://chatgpt.dhexx.cn/article/ayaPs9Kk.shtml

相关文章

程序员为什么热衷于造轮子,升职加薪吗?

作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀、分享、成长,让自己和他人都能有所收获!😄 一、前言 哪个架构师没造过轮子? 你想过这样一件事吗?是先具备能力在安排职位&…

造轮子,实现一个spring类似框架

目录 Yao框架项目地址使用示例导入maven包定义一个启动类定义一个Controller放入容器中定义一个实体类定义一个Mapper接口定义一个websocket的controller配置文件 Xioc 小型的依赖注入框架,目前支持的注解详解目前支持功能列表如下缺陷待完善 xweb 整合netty支持web…

个人网站开发之前端首次造轮子_篇一【前端大作业】【gowork.fit】

文章目录 一,前言二,开发目的三,页面样式四,顶部导航栏五,最后 一,前言 最近有一个需求:我采用了纯原生前端,没有使用框架,从0到1达到了百分百原创代码,作为…

程序员该造轮子吗,造轮子能升职加薪吗?

持续坚持原创输出,点击蓝字关注我吧 作者:小傅哥博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!???? 目录 一、前言二、我造过的轮子1. RPC 通信组件2. 编写JVM虚拟机3. 基于SpringBoot的分…

Android学习路线_工具篇(五)自己造轮子

工欲善其事,必先利其器。工具,是人类进化的一大助力,善于制造与使用工具,可以加快我们学习的速度。各种类型的工具和使用我们已经了解得差不多了,日常开发过程中也会遇到一些问题没有现成的工具可以解决,那…

避免重复造轮子,Java 程序员必备

优秀且经验丰富的 Java 开发人员的特点之一是对 API 的广泛了解,包括 JDK 和第三方库。如何使用现有的 API 进行开发,而不是为常见的东西编写新的代码。是提升开发效率必选之路。 一般来说,我会为日常项目提供有用的库,包括 Log4…

我们为什么要造轮子

程序员都喜欢造轮子,我身边的程序员,无论他们用什么语言,java、android、ios、python、go, 甚至是js,都热衷于造轮子。其实用go程序员造轮子我倒是能理解,毕竟很多java转go的朋友经常 吐槽:怎么这个没有&am…

程序员为什么热衷造轮子

搜索一下“造轮子”或者“程序员为什么喜欢造轮子”,会看到很多相关的讨论,这是个老生常谈的话题,很多人谈过了,谈了很多年。不过还是有再谈的必要。 “造轮子”的含义: 明知道你做的不可能比前辈做得更好&#xff0c…

「轮子」是什么东西?创造它有什么意义?

程序员圈经常流行的一句话:“不要重复造轮子”。在计算机领域,我们将封装好的组件、库,叫做轮子。因为它可以拿来直接用,直接塞进我们的项目中,就能实现对应的功能。 有些同学会问,人家都已经做好了&#x…

Java获取当前日期的前后一天/一周/一月/一年

Date today new Date(); //当前时间 Calendar calendar Calendar.getInstance(); //得到日历 calendar.setTime(today);//把当前时间赋给日历 calendar.add(Calendar.DAY_OF_MONTH, -1); //设置为前一天 Date yesterday calendar.getTime(); //得到前一天的时间 calend…

java获取当前的年月日日期

import java.util.Calendar; import java.util.Date;public class Main {public static void main(String[] args) {Calendar cal Calendar.getInstance();Date datenew Date();//现在的日期cal.setTime(date);Integer yearcal.get(Calendar.YEAR);//获取年Integer month cal…

java获取当前日期(JAVA获取当前日期的前三天工作日)

在java里怎么取离当前日期最近的一个星期天??知道getNow import java。util。Calendar; import java。util。Date; public class Test { public static void main(String args[]){ //获得当前日期 Date date new Date(); Calendar cal tInstance…

Java 获取当前日期并且实现日期的格式化

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 点击跳转浏览。 今天做一个需求是 实现当前事件减去100天并且格式化为下图所示 实现代码如下: String time "";if(S…

Java获取当前日期的前一天

Java获取当前日期的前一天 //获取当前日期Date date new Date();//格式转换SimpleDateFormat f new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Calendar calendar Calendar.getInstance();//设置当前时间calendar.setTime(date);//在当前时间基础上减一年calendar…

Java获取当前时间的方法

1、 System.currentTimeMillis() 获取标准时间可以使用 System.currentTimeMillis() 方法来获取,此方法优势是不受时区的影响,但是得到结果是时间戳的格式,如: 1543105352845 可以通过代码将时间戳转化为我们可以理解的格式&…

Java获取当前日期和时间

文章目录 1、 System.currentTimeMillis()2、 Java.util.Date3、 Calendar API4、 Date/Time API4.1 LocalDate4.2 LocalTime4.3 LocalDateTime4.4 ZonedDateTime 5、 总结 1、 System.currentTimeMillis() 获取标准时间可以使用 System.currentTimeMillis() 方法来获取&#…

Java如何获取当前日期和时间?

本文将为您介绍 Java 中关于日期和时间获取的方法,以及介绍 Java 8 中获取日期和时间的全新API。 1、 System.currentTimeMillis() 获取标准时间可以使用 System.currentTimeMillis() 方法来获取,此方法优势是不受时区的影响,但是得到结果是…

孪生网络 Siamese Network

文章目录 孪生网络的发展孪生网络定义功能与用途损失函数 孪生网络的发展 孪生网络又称为连体网络,网络中的连体是通过共享权值来实现。孪生网络最早是出现在1993年的论文《Signature Verification using a ‘Siamese’ Time Delay Neural Network》用于美国支票上…

论文笔记:孪生神经网络(Siamese Network)

Siamese Network 原文:《Learning a Similarity Metric Discriminatively, with Application to Face Verification》 1、四个问题 要解决什么问题? 用于解决类别很多(或者说不确定),然而训练样本的类别数较少的分类…

SiameseFC超详解

SiameseFC 前言论文来源参考文章 论文原理解读首先要知道什么是SOT?(Siamese要做什么)SiameseFC要解决什么问题?SiameseFC用了什么方法解决?SiameseFC网络效果如何?SiameseFC基本框架结构SiameseFC网络结构…