c语言用16进制颜色刷屏,c语言的基础

本文详细介绍了进制转换的基本原理,包括十进制到二进制、八进制、十六进制的转换方法,并着重讲解了数据类型,如基本类型(字符、整型、实型)、构造型(枚举、结构体、共用体)和指针类型。还介绍了变量的概念、定义规则及算术运算符的使用,以及格式化输入输出的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.我们首先学习进制,因为计算机跟人的思想不一样,它只能识别0跟1.那么什么是进制呢?

我们用阿拉伯数字0,1,2.....9当到9了,下一个数字就是9+1满1变成了10。以此类推,这样的形式叫进制,我们现在用的数字用专业术语叫十进制

计算机识别的是二进制。还有其它的八进制,十六进制,那我们用的十进制怎么转换为二进制呢。现在我讲个公式。十进制如果转化为二进制,让十进制除以2倒取

余。这样就可以转化为二进制,十进制转化为八进制转化为十六进制,都是这样的形式。

计算机中常⻅见的进制:⼆二进制、⼋八进制、⼗十六进制和⼗十进制为了区别不同进制的数,⼋八进制以0开头、⼗十六进制以0x开头

如,我们拿个十进制数。十进制100我们给他转化为十制看看是多

少:100除10商10余0,10除10商1余0,1除以10商0余1,从前往后余数是这样排列:001,根据我说的公式倒取余,把余数倒取一下排列

为:100.这就是进制之间的转化。十制转化为二进制也是这样,从十进制转化为几进制就叫十进制数去除以几。这样记一下。我们在拿个100转化为二进制例

子:100除2商50余0,50除2商25余0,25除以2商12余1,12除2商6余0,6除以2商3余0,3除2商1余1,1除以2商0余1,余数正序排列下来是0010011,按公式倒取余1100100,我们拿进制转换器看一下,验证一下:​

a4c26d1e5885305701be709a3d33442f.png输入100转换为二进制

上面图片是我输入一个十进制,转换为二进制的结果。

那有人说了,十进制转化二进制,怎么将二进制转化为十进制呢。有一个公式就是按权求和。

基数:也叫底数,基数为n,代表n进制。

位权:从个位开始,向左⼀一次编号为0,1...x,分别代表n进制的x次⽅方。

比如100转成二进制为1100100,看一下这个二进制位数。从左往右进行以0开始编号。​​最右面编号是6,最左面编号是0,那我们就可以写成1*10^6

+ 1*10^5 +0*10^4 +0*10^3 +1*10^2 +0*10^1 +0 *

10^0,从二进制转到十进就以当前数字乘以10的编号次方。这样得出的结果就是十进制的结果。

2.​数据类型

1)基本类型:a.字符型 char 1字节,b.整型 int 4 c.实型分为单精度float 4字节,双精度

8字节,d.无值型void

2)构造型:a.枚举类弄 enum b数组 c 结构体struct d共用体

3)指针类型

这些类型我们经常跟常量变量一起去用。

那什么是变量呢?变量可以发生变化的量

比如int a = 1;

a=2;a值第一次是1第二次就变成2了这就说明a是变量。我们举的例子就是变量的声明与赋值

变量定义的三要素:类型修饰符 变量名 =

初始值;

注意:在使⽤用变量之前必须对变量进⾏行定义

我们知道怎么定义变量了,那么我们却不知道定义变量名的规则:1.只能由数字、字⺟母、下划线组成,并且数字不能开

头。2.不可以与系统保留字同名。3.不能使用系统保留字

a4c26d1e5885305701be709a3d33442f.png

这样的格式都是错误的。我这样定义都报了错。

3.算术运算符

+ - * /  %  ++

--

++ --运算符在前,先执行;运算符在

后,后执行。这个特别要注意:int b = a++;int c=++a;考试一般爱出这些题,如题:int num=1,a = 0; a

= num++  +  ++num; a = num-- +

++num;问这些运算完之后值分别是多少。仔细考虑一下这些问题。++在前返回新结果,++在后返回旧结果。这种话相对于表达式而言。但是本身值都会变的。大家可能看文字意思理解不了,那我来给你解析一下:

int num = 1,a = 0;

首先看a = num ++ +

++num;,num++这整个相当于表达式。++在后整个表达式的值是1。就是num = num

+1;这个表达式为1,而num本身的值却变为2了。

这点明白吧。然后我们看++num。前面的num已经成为2了,++num的++在前,整个表达式的值为3.这样a的值为4.而现在的num也已经为3,看程序运行截图:

a4c26d1e5885305701be709a3d33442f.png

下那行a = num-- +

++num​;类似。这就遵循了++在前返回新结果++在后返回旧结果的原理。

复合运算+= -= *= /= %=​

5.格式化输入prinf(格式串,表达式1,表达式2.。。。);

格式串有%c char,%d int,%ld

long,%sd​  short,%f

float类型。

char a = 'a';

int    b =

10;

float c =

10.456;

1).printf("c\n" ,

a);

2).printf("d\n" ,

b);

3).printf("%-5.2f"  , c);

我们来解释一下,第一个c这个代表输入的字符占10位第二个也类似,而第三个%-5.2f这个是输入浮点类型的。-代表左对齐,5代表占5位。.2代表保留小数2位

6.格式化输入scanf(格式字串,表达式1,表达式2);

举例:int a = 0;

scanf("%d" , &a);输入的时候以这种格式输入。

好了分享到这,有错误的地方请指点。。。。​

​​​

<think>好的,我现在需要解决用户在K210设备上显示中文的问题。首先,我得先了解K210的基本情况。根据引用[2]和[3],K210芯片常用于人工智能应用,比如人脸识别和车牌识别,可能涉及LCD屏幕显示。用户提到的问题是如何在设备上显示中文,可能需要处理字体渲染和字符编码的问题。 接下来,我需要考虑可能的解决方案。通常,显示中文需要字体文件的支持,而K210的资源可能有限。引用[1]中提到车牌识别时LCD显示“Register OK”,说明设备支持英文显示,但中文可能需要额外处理。可能的方法包括使用点阵字体、将字体转换为位图数组,或者利用现有的库。 然后,我需要查阅相关资料。根据引用[2],K210的固件版本有新旧之分,可能需要确认用户使用的版本是否支持中文字库。另外,引用[3]提到KOI主控使用K210,能实现很多功能,可能有相关的例程或库支持中文显示。 可能的步骤包括:1. 添加中文字库到文件系统,比如使用SD卡加载字体文件;2. 使用MicroPython的LVGL库进行渲染;3. 将字体转换为位图数组直接操作LCD。需要检查用户是否有文件系统的访问权限,或者是否需要编译固件时包含中文字体。 还需要注意资源限制,K210的内存和存储可能有限,太大的字体文件可能无法加载。因此,可能需要精简字体,只包含需要的字符。同时,确保显示驱动库支持中文编码,比如UTF-8或GB2312。 最后,验证解决方案的有效性,比如编写测试代码显示中文字符,并参考引用[1]中的示例,确保LCD能够正确渲染。如果遇到问题,可能需要调试字体文件路径或编码格式是否正确。</think>### K210设备显示中文解决方案 #### 步骤说明 1. **添加中文字体文件** K210默认固件通常不包含中文字库,需要将字体文件(如`.ttf`或`.bin`格式)存入SD卡或Flash文件系统。推荐使用开源中文字库如文泉驿微米黑,并使用工具转换字体为二进制文件[^2]。 ```python # MicroPython示例: 加载字体文件 import lvgl as lv font_simsun = lv.font_load("/sd/simsun_16.bin") # 从SD卡加载字体 ``` 2. **LVGL图形库配置** 若使用LVGL图形库(K210常用显示方案),需在初始化时注册中文字体: ```python style = lv.style_t() style.set_text_font(font_simsun) # 设置文本样式字体 label = lv.label(lv.scr_act()) label.set_text("你好K210") # 直接显示中文 ``` 3. **直接LCD驱动层绘制** 对于裸机开发,可将汉字转换为位图数组。使用PC端工具生成包含目标汉字的位图数据(如使用Img2Lcd软件),通过SPI/I2C接口发送到屏幕: ```c // C语言示例: 显示16x16汉字 const uint8_t hz_ni[32] = {0x08,0x40,0x08,0x40,...}; // "你"字模数据 lcd_draw_bitmap(0, 0, 16, 16, hz_ni); ``` #### 关键注意事项 - **字体体积优化**:使用FontForge删除无用字符,仅保留GB2312等常用字符集,使文件体积缩小到50-200KB[^3]; - **编码一致性**:确保代码文件保存为UTF-8格式,避免乱码; - **硬件加速**:K210的FPIOA可重映射SPI引脚,提升刷屏速度。 #### 效果验证 参考车牌识别项目中"Register OK"的显示逻辑[^1],将中文字符替换到相同显示区域,观察屏幕是否正常渲染。若出现乱码,需检查字体路径、编码格式和渲染API的调用顺序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值