![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言基础
鼾声鼾语
汽车行业研发,人工智能领域及汽车电气自动化工程师
展开
-
MVP 设计模式中, Service 属于什么层
1,一般思路是:a.通过绑定,将View示例传递给present,通过接口实例化进行进行presenter回调view形式的交互。b.让presenter运行在service中。参考代码:https://blog.csdn.net/martinsz/article/details/110419284原创 2021-02-15 16:55:31 · 480 阅读 · 0 评论 -
报文协议中的编码信息和解码信息,Encoding Message和Decoding Message
利用:darks-codec库来进行解析帧数据格式: FB FA [ID 32bits] [VERSION 8bits] [COMMAND] FF编码信息类:public class SimpleMsg{int id;byte version;String command;}配置:ObjectCoder coder = new ObjectCoder();coder.getCodecConfig().setEndianType(EndianType.LITTLE);coder.原创 2021-01-25 11:19:15 · 840 阅读 · 0 评论 -
大端和小端的解释:EndianType.LITTLE和EndianType.BIG
注意我们填格子的方式分为Intel和Motorola两种。如果你的Signals都没有跨字节的问题,那么Intel和Motorola格式出来的效果是一样的。当然这不可能,你无法确保不跨字节。Intel格式也即小端,MSB存放在高字节单元,反映到矩阵图中就是以起始位为原点,自上而下填充。Intel格式,MSB在LSB下面Motorola格式也即大端,MSB存放在低字节单元,反映到矩阵图中就是以起始位为原点,自下而上填充。...原创 2021-01-25 11:18:57 · 288 阅读 · 0 评论 -
java中的反射是什么?有什么作用?
思考:在讲反射之前,先思考一个问题,java中如何创建一个对象,有哪几种方式?Java中创建对象大概有这几种方式:1、使用new关键字:这是我们最常见的也是最简单的创建对象的方式2、使用Clone的方法:无论何时我们调用一个对象的clone方法,JVM就会创建一个新的对象,将前面的对象的内容全部拷贝进去3、使用反序列化:当我们序列化和反序列化一个对象,JVM会给我们创建一个单独的对象上边是Java中常见的创建对象的三种方式,其实除了上边的三种还有另外一种方式,就是接下来我们要讨论的 “反射”1、原创 2021-01-07 08:39:54 · 520 阅读 · 0 评论 -
java中内存管理以及作用域
1,在java中变量的作用域在花括号之内,用花括号表示,作用域用花括号的位置决定2,对象的作用域java对象不具备和基本类型一样的声明周期,但用new创建一个java对象时,它可以存活于作用域之外,所以假如你采用代码:{String s=new String(a string);}end of scope引用s在作用域终点就消失了,然而,s指向的String对象仍然继续占据内存空间,在这一小段代码中,我们无法在这这个作用域之后访问这个对象,因为对它唯一的引用已经超出了作用域的范围,在以后,在程序原创 2020-12-31 15:43:26 · 106 阅读 · 0 评论 -
引用和指针的关系,引用在内存中是如何存储的
引用类型是指存储在内存堆上的数据类型,堆与栈是不一样的,存储在堆上的数据CPU不能直接读取,需要使用一个地址去查找。引用书面语中,引用指的是在说话或者写作中引用现成的话,在计算机语言中,引用就是某一变量或者目标的别名,对引用的操作与对变量直接操作完全一样,引用的声明方法:类型标识符&引用名=目标变量名(1)指针是实体,引用是别名,没有空间。(2)引用定义时必须初始化,指针不用。(3)指针可以改,引用不可以。(4)引用不能为空,指针可以。(5)Sizeof(引用)计算的是它引用的对象的大小原创 2020-12-31 14:42:30 · 1002 阅读 · 0 评论 -
在J1939中多帧数据如何发送,它是通过TP.CM_BAM和TP_DT报文发送
1,多帧报文是通过专门的多帧发送报文来传递发送的,其中常见的由DM1报文(故障读取的报文)RC报文(缓速器扭矩特性报告的报文)还由ETC7(AMT相关的报文)2,那么这些多帧是如何发送到总线上的?这个时候就要用到TP.CM_BAM和TP_DT报文了首先如果是单帧报文,那么他们用各自的ID直接发送到总线上如果是多帧数据就需要用到TP_DT了,例如:DM1多帧发送故障数据到总线,那么发送的过程是如下:首先发送TP.CM_BAM,其中包含的信息有:ID :18ECFF10 + Contro原创 2020-12-29 15:50:57 · 8068 阅读 · 9 评论 -
从c#到c语言开发的基本数据类型的映射关系
1,这里先不考虑电脑到底是32位,还是64位的直接进行替换然后试出来的,UINT32 和c的对应关系 unsigned intUINT16 和c的对应关系 unsigned shortUINT8 和c的对应关系 unsigned short ,测试后这里用unsigned char也是可以的,但是char一般是用作字符的,所以我这里选择还是用short吧。记住带U的定义,一定是需要unsigned的...原创 2020-12-28 15:34:29 · 356 阅读 · 2 评论 -
simulink生成c代码,为什么函数内容为空?同时需要集成android进行混合编程,生成so库,怎么处理?
1,首先注意的是在建立simulink模型的时候,需要建立输入输出,没有输入输出的话,则生成的代码函数为空,举例如下:2,生成的代码这里需要注意的是参数和返回值为空,但是要用这个函数,我们必须修改这个函数,提供参数和返回值,这里是需要自己二次写的,请注意3,修改生成代码示例如下图:4,生成c代码以后,再导入到androidstudio中,通过编写jni接口,用NDK工具,生成so库...原创 2020-12-24 10:32:03 · 593 阅读 · 0 评论 -
android ndk - How to fix gradle task ‘:app:mergeDebugJniLibFolders‘
在用so库的时候出现这个报错原因是我修改了生成library库的名称,原理的名称和现在的名称不一样,所以直接运行是不可以的,在merge合并的时候找不到库,所以我们需要的是clean一下工程即可,然后再运行。...原创 2020-12-21 19:28:11 · 736 阅读 · 0 评论 -
c语言unsigned char相当于byte,那么如何使用呢,我们进行移位
1,首先我们用的IDE是codeblock,2,注意printf中打印整型,%d表示的是有符号的整型,%u表示的才是无符号的整型,3,在java和c#中有byte这个数据类型,但是在c中是没有的,我们一般用unsigned char来替换,byte,而且实际是可以的。下边我们测试一下移位操作的真正的含义,测试1:unsigned int getkey(unsigned char*seedData){unsigned int seedX;seedX=(seedData[0] << 3原创 2020-12-18 14:36:15 · 1893 阅读 · 0 评论