C/C++
冷傲斌哥
这个作者很懒,什么都没留下…
展开
-
C语言 获取汉字机内码、区位码、国际码
至于什么是机内码、区位码、国际码,百度谷歌一大堆,下面直接给代码#includevoid main(void){ unsigned char temp[2]; scanf("%s",temp); printf("机内码高字节是0x%.2x\n",temp[0]); printf("机内码低字节是0x%.2x\n",temp[1]); printf("区位码区码是%2原创 2013-06-05 16:15:19 · 9328 阅读 · 0 评论 -
C语言二维数组动态创建与释放
二维数组动态创建与释放有多种方式,下面就给原创 2014-09-17 16:46:21 · 1502 阅读 · 1 评论 -
全局变量在头文件中“定义”
看着标题,定义上面加了一个引号,这个得注意了。怎么j原创 2014-09-18 14:07:28 · 3066 阅读 · 0 评论 -
LED循环播放节目
在LED行业,一般都会有多个节目显示,假如现在有10节目,里面的节目数据可能会为空或者不为空,每点击一下切换节目按钮,就切换下一条节目。当然,可以选择播放指定的节目,也可以循环播放所有的节目。当我们选择了循环播放节目的时候,加入1、3、5、7、9都存在节目,其他的节目为空,这里我们就希望,先播放第1条节目,然后播放第三条节目,之后按照这个顺序播放所有后续的节目,播放完毕后,又切换到第一条节目,这样原创 2014-12-20 14:32:24 · 3123 阅读 · 0 评论 -
数组比特位循环左移和右移
下面直接给出代码,详细请看代码#include typedef unsigned char uint8_t;typedef unsigned short uint16_t;uint8_t RotateLeft(uint8_t *p, uint8_t len){ uint8_t valBit; if (!len) return 0; len--; valBit =原创 2015-01-24 10:25:26 · 3128 阅读 · 0 评论 -
C语言实现双字节在数组中按比特位移动
先说一下应用场合,在LED点阵显示屏中,为了节省flash空间,常用一个bit位来标记哪个灯是否点亮。为了做出比较炫的效果,比如16 * 16像素gif动画边边移动边跳跃。就应用到该思想。 双字节是16bit位,数组的bit位是数组长度乘以8(类型指的是uint8_t),比如uint8_t a[5]长度则是5 * 8 = 40。该函数的思想就是这双字节的16bit位在在数组a[5原创 2015-03-11 15:57:21 · 1684 阅读 · 0 评论 -
宏定义神级用法-调试信息便捷开关
大家编写程序的时候,一般都会有调试信息,这些调试信息一般长期伴随着,后来要发布的时候发那些不需要的调试信息给删除掉,如果是一个有丰富的经验人,是采用一个宏定义的开关来决定是否启动这些打印信息。代码如下: #include <stdio.h>/***********************************************************...原创 2015-04-03 10:05:06 · 2421 阅读 · 4 评论 -
提取字节中间的n个bit位
试想,假如让你从一个字节中c中起始位置为s,提取长度为l的bit,用最简单的方法提取,可能你会想到宏定义或者函数。就不饶了,思来想去,最后采用创建一个二维数组的查表方法。表如下:const unsigned char Get_Middle_Byte[8][9] = { 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0x00原创 2015-04-22 22:48:30 · 4969 阅读 · 0 评论 -
hex文件转换为bin文件C语言实现
上一章讲解的是bin文件转化为hex文件,本文主要是贴出hex文件转bin文件的代码:新建hex2bin.h#ifndef HEX2BIN_H#define HEX2BIN_Htypedef unsigned char uint8_t;typedef unsigned short uint16_t;typedef unsigned long uint32_t;#def...原创 2015-04-19 20:55:46 · 15542 阅读 · 5 评论 -
bin文件转换为hex文件C语言实现
对于嵌入式而言,hex文件可能大家再熟悉不过了,对,我们大学时学习的51单片机编写的代码在keil上编译后就生成了hex文件。那bin文件又是什么意思呢,它又和hex文件的区别在哪?这也不是本文的重点,下面简单的描述下:最通俗的来讲,hex是带地址的,用下载器下载时,不需要设置偏移地址,它是文件流格式的,都是标准的ASCII码。而bin文件是不带地址的,全部是二进制数据流,打住一下,其实就是我原创 2015-04-19 19:25:22 · 16351 阅读 · 4 评论 -
横向纵向的5*7字库
对于较小的显示屏而言,对字库的显示有所苛刻,这里我们用到的是5*7的字库,不过终于找到了一个,是纵向的,与我所用的接口有所不符合,所以我转换了下,变成了横向的了。这里贴出代码,及其新的横向字库。代码在QT的控制台上缩写,之前都是VC控制台写的。#include /****************************************************************原创 2015-04-29 11:02:08 · 1552 阅读 · 0 评论 -
C语言实现比特位数组在目标空间左右居中对齐三种方式
在LED行业中,一般一个灯亮或者不亮用一个bit位来表示(这里就不谈七彩或者灰度控制卡),现在加入我们屏幕大小是128点,相当于宽度16个字节,如果我们让两个汉字居中显示(两个汉字占宽度4个字节),轻轻松松就可以算出如果要实现居中,只要偏移(16 - 4) / 2 = 6个字节宽度,当然这里我们都是假象的理想情况,假如需要显示的字符宽度不是固定并且显示内容也经常变化,这种情况下,无法手动计算。本文原创 2015-04-28 16:20:40 · 2341 阅读 · 0 评论 -
modbus协议crc校验
数据校验是数据传输必不可少的一部分,主要目的就是防止数据传输过程中出现差错。本文主要根据原理实现它的核心代码。预置1个16位的寄存器为十六进制FFFF(全1),此寄存器为CRC寄存器把第一个8位二进制数据(即通讯信息帧的第一个字节)与16位的CRC寄存器的低八位相异或,吧结果存放于CRC寄存器。把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检测右移后的移出位。原创 2015-05-07 18:48:48 · 5406 阅读 · 0 评论 -
位操作赋值与清零
#include #define SetBit(c, n) c |= (1 << n)#define ClrBit(c, n) c &= ~(1 << n)void main(){ unsigned char t = 0x00; printf("t = %02x\n", t); SetBit(t, 2); printf("t = %02x\n", t); ClrBit(t,原创 2014-09-16 17:44:05 · 1063 阅读 · 0 评论 -
自动识别当前语言系统
#include #include using namespace std;int main(){ unsigned short cid = GetSystemDefaultLCID(); switch (cid){ case 0x0804: cout << "简体中文" << endl; break; case 0x0404: cout << "繁体系统" << en原创 2014-08-29 13:57:03 · 1553 阅读 · 0 评论 -
C 参数个数可变函数举例
本来是想基于arm上实现printf函数,该函数参数类型不固定、个数也不固定,于是有点好奇,C语言是如何实现的。在看懂下面函数之前,必须了解一个问题,就是调用一个函数时,压入堆栈的数据是哪些排列的顺序如何。 在进程中,堆栈地址从高往低分配的。调用函数时,压入堆栈的数据排列格式如下:最后一个可变参数倒数第二个可变参数...第一个可变参数固定参数(这里假设固定参数为一个)函数返回原创 2013-06-05 15:33:10 · 1034 阅读 · 0 评论 -
C 语言大小端模式判断
所谓大端模式是数据的高字节部分存放在低地址上,数据的低字节部分存放在高地址部分;小端模式刚好相反,数据的低字节部分存放在低地址上,数据的高字节部分存放在高地址部分。下面直接贴出查询本机系统是大小端模式的代码,该代码基于的一个准则是:数组的下标越大它对应的元素的地址就越大,就如c[1]的地址大于c[0]的地址;同时,在共用体中,它里面的各变量的地址都是相同的,也相当于c[0]和myLong的地址相当原创 2013-06-06 22:40:38 · 1299 阅读 · 0 评论 -
C语言 获取汉字unicode和utf-8编码
就VC而言,汉字储存一般都是以国标码形式存放在电脑上的,要想查询一个汉字的unicode编码,可以在一个字符串前面加一个‘L,也相当于让该汉字以unicode编码形式存放。 unicode编码与utf-8编码之间的关系是什么,其实两者之间,个人感觉,utf-8编码是unicode编码的具体实现。两者之间的对应关系如下所示,可以看到。当一个字符的unicode编码在0x00原创 2013-06-06 13:36:33 · 9187 阅读 · 2 评论 -
VC 多线程同步方式操作串口
#include#includeusing namespace std;DWORD WINAPI CommReceive(LPVOID lpParameter);DWORD WINAPI CommSend(LPVOID lpParameter);HANDLE hwbEvent;HANDLE m_hCom;int main(){ DCB dcb; //打开串口 m_hCom=C原创 2013-08-13 16:24:02 · 2436 阅读 · 0 评论 -
VC 多线程异步方式操作串口
#include#include#include using namespace std;DWORD WINAPI CommSend(LPVOID lpParameter); DWORD WINAPI CommReceive(LPVOID lpParameter); OVERLAPPED overRead,overWrite; HANDLE m_hCom;int m原创 2013-08-14 16:43:43 · 2217 阅读 · 0 评论 -
VC winsock客户端多线程收发数据
这里是直接在dos窗口输入数据,发送出去,因此数据是可见类型的,当然也可以是不可见的,以字节流的形式发送出去没有问题,在此贴出代码#include #include using namespace std;#pragma comment(lib,"ws2_32.lib") //以静态方式加载库#define IP "121.199.9.233" //IP地址#define PO原创 2013-08-14 19:04:39 · 3541 阅读 · 0 评论 -
宏控制打印信息输出
#include#define DEBUG 0//如果DEBUG=0 关闭所有打印信息//如果DEBUG=1 打开所有打印信息#if DEBUG #define debug(arg) printf(arg) #define debug_1(arg,one) printf(arg,one) #define debug_2(arg,one,two) printf(arg,on原创 2013-10-28 11:58:58 · 1199 阅读 · 0 评论 -
统计单字节、多字节bit位长度
#include//统计一个字节bit为1的个数unsigned char CountBit(unsigned char value){ unsigned char i=0; unsigned char count=0; while(i<8) { if(value & 0x01) { count++; } value>>=1; i++; } retur原创 2013-10-29 10:06:53 · 1159 阅读 · 0 评论 -
VC 获取鼠标当前位置坐标和RGB
下面直接给出代码,至于相应的API函数请参考百度文库。#include#include using namespace std;int main(){ POINT point; unsigned long rgb; HDC scr; while(1) { if(GetAsyncKeyState(VK_F8) & 0x8000) //按下F8 { scr原创 2013-11-02 15:02:02 · 6900 阅读 · 0 评论 -
VC 控制windows自带计算器做加法运算
本程序控制windows自带计算器模拟从1加到100,直接源码。#include#include using namespace std;//分别为数字键、+、=与计算器左上角的相对位置POINT point[12]={ {310,240},//0 {310,210},//1 {350,210},//2 {390,210},//3 {310,180},//4 {350原创 2013-11-04 09:31:46 · 1081 阅读 · 0 评论 -
数据结构之顺序结构线性表之操作
#includetypedef int ElemType;typedef int Status;#define MAXSIZE 5#define OK 1#define ERROR 0typedef struct{ ElemType data[MAXSIZE]; int length;}SqList;//顺序结构的线性表初始化void InitSqList(SqList *原创 2013-11-22 14:05:22 · 1089 阅读 · 0 评论 -
递归搜索所有文件目录
依稀记得当时xie原创 2014-07-26 11:18:20 · 732 阅读 · 0 评论