unsigned

C位域知识小结

匿名 (未验证) 提交于 2019-12-03 00:36:02
位域的用途: 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几 个不同的对象用一个字节的二进制位域来表示。 1. 一个位域必须存储在同一个字节中,不能跨两个字节,故位域的长度不能大于一个字节的长度。 如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从下一单元开始。例如: #include <iostream> using namespace std ; struct BitField1 { unsigned int a : 4 ; //占用4个二进制位; unsigned int : 0 ; //空位域,自动置0; unsigned int b : 4 ; //占用4个二进制位,从下一个存储单元开始存放; unsigned int c : 4 ; //占用4个二进制位; unsigned int d : 5 ; //占用5个二进制位,剩余的3个bit不够存储4个bit的数据,从下一个存储单元开始存放; unsigned int : 0

SPI方式读取汉字字库芯片

匿名 (未验证) 提交于 2019-12-03 00:36:02
需求: 在液晶屏上显示指定的汉字 方案1:以带有汉字的图片形式显示 否定原因: 1)在画面展示时,会覆盖显示背景,不美观协调 2)需要先由图片格式转换成位图格式,不连贯,不方便 方案2:通过直接读取汉字字库芯片获得位图数据进行显示 选择原因: 1)在画面展示时,不会覆盖显示背景,美观协调 2)直接获取位图格式数据,连贯,方便 选定方案2后,硬件方面,需要在主板(还是背板?)上增加汉字字库芯片模块 汉字字库芯片使用方法(芯片厂家说明书上是这么说的): 1)得到指定汉字对应的内码 2)通过本手册提供的方法计算出在芯片内的地址 3)即可从地址连续读出字符点阵数据 字库芯片驱动: 1)SPI总线接口的初始化(尤其是MOSI/MISO/SCLK/CS#引脚的对应) 2)SPI读写函数 实际上,可从芯片厂家处获取相关库文件(.lib),直接调用库函数即可获取相应点阵数据,以12*12点阵函数为例: void gt_12_GetData (unsigned char MSB,unsigned char LSB,unsigned char *DZ_Data); 汉字内码的获取方法: 汉字字符串在寄存器以内码形式存储,通过unsigned char *指针,指向指定的汉字字符串(例:“中国长城”) 得到点阵数据后,根据厂家的字符排列格式(一般为横置横排)编写对应的代码。 本工程的主要工作即如上所述。

数据库复习秘籍

匿名 (未验证) 提交于 2019-12-03 00:32:02
练习前的准备,先创建一个test库,在test库中建立数据: create table goods ( goods_id mediumint( 8 ) unsigned primary key auto_increment, goods_name varchar ( 120 ) not null default ‘‘ , cat_id smallint ( 5 ) unsigned not null default ‘ 0 ‘ , brand_id smallint ( 5 ) unsigned not null default ‘ 0 ‘ , goods_sn char ( 15 ) not null default ‘‘ , goods_number smallint ( 5 ) unsigned not null default ‘ 0 ‘ , shop_price decimal ( 10 , 2 ) unsigned not null default ‘ 0.00 ‘ , market_price decimal ( 10 , 2 ) unsigned not null default ‘ 0.00 ‘ , click_count int ( 10 ) unsigned not null default ‘ 0 ‘ ) engine = myisam default

expected primary-expression before &#039;unsigned&#039; 解决方案

匿名 (未验证) 提交于 2019-12-03 00:30:01
问题描述: 语句 result += unsigned int(1) << i; 在本地可以编译运行,但是上传至LeetCode后出现编译错误:expected primary-expression before ‘unsigned’。 分析: 语句太复杂,LeetCode上的编译器无法完全编译,需要添加基本表达式。 解决方案: 1 Ϊ unsigned int 添加括号: (unsigned int) 。 2 添加中间变量 unsigned int one = 1; result += one << i 。 文章来源: expected primary-expression before 'unsigned' 解决方案

大数据去重――位图

匿名 (未验证) 提交于 2019-12-03 00:25:02
100亿整型数据去重? 整型数据为32位最多有2^32(42亿多),所以100亿整型数据一定有重复的,2^32个整形用位表示,需要(2^32)bit==512MB,需要512MB内存表示。 下面是去重算法: #include <stdio.h> #include <stdlib.h> #define MAX (0xffffffff) void setBuf(char *buf, unsigned int num) { *(buf+(num>>0x3)) |= (0x1<<(num&0x7)); return; } unsigned int getBuf(char *buf, int num) { unsigned int flag = 0; flag = ((*(buf+(num>>0x3)) & (0x1<<(num&0x7))) != 0)? 1:0; return flag; } int main(int argc,char **argv) { if(argc < 2) { printf("usage:./a {0-9}*\n"); return 0; } unsigned int index = 1; unsigned int num; unsigned int max = 0; char* buf = (char*)calloc((MAX>>0x3)+1,sizeof

char[][]转换成一个unsigned char*

匿名 (未验证) 提交于 2019-12-03 00:22:01
http://www.myexception.cn/c/357072.html 求教如何将char[][]转换成一个unsigned char*? 有如下定义 unsigned char* dest; char src[100][100]; 我想把src放到dest里,用如下办法貌似不行 memcpy(dest,src,sizeof(src)); 程序会一直停在这里,也不退出。环境为unix或者LINUX ------解决方案-------------------- 呃,你的dest是unsigned char*的: ------解决方案-------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { unsigned char* dest = (unsigned char* )malloc(10000); char src[100][100] = {0}; memset(src, 0x55, 10000); memcpy(dest, src, 10000); free(dest); return 0; } 文章来源: char[][]转换成一个unsigned char*

unordered_set 模型

匿名 (未验证) 提交于 2019-12-03 00:19:01
1.unordered_set C++ 11中出现了两种新的关联容器:unordered_set和unordered_map,其内部实现与set和map大有不同,set和map内部实现是基于RB-Tree,而unordered_set和unordered_map内部实现是基于哈希表(hashtable),由于unordered_set和unordered_map内部实现的公共接口大致相同。 模板原型: template class class class class class hash<Key> 整型值:bool、char、unsigned char、wchar_t、char16_t、char32_t、short、int、long、long long、unsigned short、unsigned int、unsigned long、unsigned long long。上述的基本数据类型,其标准库提供的hash函数只是简单将其值转换为一个size_t类型值,具体可以参考标准库functional_hash.h头文件,如下所示: template < typename struct template < typename struct public size_t size_t const return reinterpret_cast < size_t template

自定义日历(四)-区间选择控件

匿名 (未验证) 提交于 2019-12-03 00:16:01
Ŀ¼ 1、QPickDate 2、QDatePanel 3、QDateWidget、QDateContent 原文链接: 自定义日历(四)-区间选择控件 很早很早以前,写过几篇关于日历的文章,不同于Qt原生的控件,这些控件都是博主使用自绘的方式进行完成,因此可定制性更强一些,感兴趣的可以参考 自定义日历(一) 、 自定义日历(二) 和 自定义日历(三)) 。 本篇文章还是继续来写我们的日历控件,仍然采用自绘的方式,带来更加炫酷的效果。看本文的标题就应该就能明白,这次实现的是一个可以区间选择的日历控件。 效果图如下,一个简单的效果展示。 日历控件与Qt原生的QDateEdit一样,是由一个按钮进行触发,弹出如期选择面板。不同的是这个日历选择面板由2个小的日期面板组成,分别是开始和结束日期,规则如下: 开始日期必须小于结束日期 顶部有快速返回按钮 选中的日期段上有高亮背景色 选中的日期点上有蓝色圆形标识 点击确定按钮以后日期选择面板关闭 开始讲解具体内容之前,先来看下整体的结构划分,实现这个日期段选择控件,总共需要以下4个类,下图是工程结构 以下是4个类的说明 QDateContent:单个日历窗口 QDateWidget:包含了年月选择的单个日历窗口 QDatePanel:日期段选择面板 QPickDate:日期选择按钮,用于呼出日期选择面板 其中QPickDate类就是对外使用的类

Mixly智能门禁(物联网)

匿名 (未验证) 提交于 2019-12-03 00:15:02
智能门禁 我的校园卡号识别为 30fcb4a8d #include <RFID.h> #include <SPI.h> #include <Servo.h> RFID rfid(10,5); unsigned char RC_size; unsigned char blockAddr; //选择操作的块地址0~63 unsigned char i,tmp; unsigned char status; unsigned char str[MAX_LEN]; Servo servo_5; char * card[]={"30fcb4a8d","30fcb4a82","30fcb4a83"}; char * name[]={"wu","liu","lu"}; String rc; String RFID_readcardnum() { rfid.readCardSerial(); String stringserNum=String(rfid.serNum[0], HEX)+String(rfid.serNum[1], HEX)+String(rfid.serNum[2], HEX)+String(rfid.serNum[3], HEX)+String(rfid.serNum[4], HEX); //选卡,返回卡容量(锁定卡片,防止多次读写) rfid.selectTag(rfid

ICMP报文

匿名 (未验证) 提交于 2019-12-03 00:14:01
简介 ICMP(INTERNET CONTROL MESSAGE PROTOCOL)网络控制消息协议。 协议号为1 ICMP报文在IP报文内部 ICMP 类型: ICMP报文主要有两个功能:查询报文和差错报文 ICMP 报文头: //定义ICMP首部 typedef struct _icmphdr{   unsigned char i_type; //8位类型   unsigned char i_code; //8位代码   unsigned short i_cksum; //16位校验和, 从TYPE开始,直到最后一位用户数据,如果为字节数为奇数则补充一位   unsigned short i_id ; //识别号(一般用进程号作为识别号), 用于匹配ECHO和ECHO REPLY包   unsigned short i_seq ; //报文序列号, 用于标记ECHO报文顺序   unsigned int timestamp; //时间戳 }ICMP_HEADER; ICMP 报文的各种状态: 目的不可达报文(Destination Unreachable Message) 找不到目的IP传递路径 源端口抑制报文(Source Quench Message) 路由器在处理报文时会有一个缓存队列。如果超过了最大缓存队列,将无法处理,从而丢弃报文,并向源发送一个ICMP源冷却报文