bit

MFC常用数据类型

烈酒焚心 提交于 2019-12-05 16:49:11
转载自: https://www.cnblogs.com/xzxl/p/7955477.html 下面这些是和Win32程序共同使用的数据类型 BOOL:布尔值,取值为TRUE or FALSE BSTR:32-bit 字符指针 BYTE:8-bit整数,未带正负号 COLORREF:32-bit数值,代表一个颜色值 DWORD:32-bit整数,未带正负号 LONG:32-bit整数,带正负号 LPARAM:32-bit整数,作为窗口函数或callback函数的一个参数 LPCSTR:32-bit指针,指向一个常数字符串 LPSTR:32-bit指针,指向一个字符串 LPCTSTR:32-bit指针,指向一个常数字符串,此字符串可以移植到Unicode和DBCS LPTSTR:32-bit指针,指向一个字符串,此字符串可以移植到Unicode和DBCS LPVOID:32-bit指针,指向一个未指定类型的数据 LPRESULT:32-bit数值,作为窗口函数或callback函数的返回值 UINT:在Win16中是一个16-bit 未带正负号整数,在Win32中是一个32-bit 未带 正负号整数, WNDPROC:32-bit指针,指向一个窗口函数 WORD:16-bit 整数 ,未带正负号 WPARAM:窗口函数或callback函数的一个参数,在Win16中是16-bit

Best way to store long binary (up to 512 bit) in C#

只愿长相守 提交于 2019-12-05 16:37:53
I'm trying to figure out the best way to store large binary (more than 96 bit) numbers in C# I'm building application that will automatically allocate workers for shifts. Shifts can be as short as 15 minutes (but this might be even smaller in the future). To avoid double-booking of workers, I plan to have binary map of their daily time: 24 hours separated in equal chunks (15 minutes) and every chunk has a flag (0 for free, 1 for busy) So when we try to give another shift to a worker, we can do binary comparison of workers daily availability with shift's time. Simple and easy to decide. But C#

Bit,Byte,WORD,DWORD区别和联系

放肆的年华 提交于 2019-12-05 14:37:08
基本概念: 位(Bit): “位”或“比特”,是计算机运算的基础; 字节(Byte): “字节”是通过网络传输信息(或在 硬盘 或 内存 中存储信息)的单位。 字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位, 1个字节等于8位二进制 。 在 ASCII码 中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。 符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小 一个二进制数字序列,在 计算机 中作为一个数字单元,一般为8位二进制数,如一个ASCII码就是一个字节. 字(WORD), 2个字节组成一个字。 双字(DWORD), 4个字节组成一个双字。 如ANSI标准规定一个字符为1个字节或多个字节,UNICODE为宽字节字符串或者UNICODE字符串,规定,每个字符都占两个字节。如"中国123",ANSI编码为5字节,在UNICODE中为10字节。 Unicode和ANSI的区别 就相当于输入法内的“全角”和“半角”的区别。 由于不同 ANSI 编码所规定的标准是不相同的(字符集不同),因此,对于一个给定的多字节字符串,我们必须知道它采用的是哪一种字符集则,才能够知道它包含了哪些“字符”。而对于 UNICODE 字符串来说,不管在什么环境下,它所代表的“字符”内容总是不变的

Base64编码

六月ゝ 毕业季﹏ 提交于 2019-12-05 12:06:31
一、什么是base 64编码 Base64是网络上最常见的用于传输 8Bit字节代码的编码方式之一。 base64 编码可以用于在 HTTP环境下传递较长的标识信息。 例如:在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。 这时采用base64编码不仅比较简单,同时还具有不可读性,即所编写的数据不会被人眼所直接识别。 但是,标准的 Base64 编码并不适合直接放到URL里面传输,因为URL编码器会把标准 Base64中的(/)和(%)变形为例如(%XX)的形式,并且这些(%)在存入数据库的时候还要进行转换,因为ANSI SQL中已将(%)用作通配符。 为了解决这个问题,可以采用一种用于URL的改进 Base64编码,不在末尾填充(=)号,并且将标准Base64 中的(+)和(/)分被改成了(*)和(-),这样就避免了在URL 编码解码和数据库存储时所要做的转换,避免了编码长度在此过程中的增加,并且统一了数据库、表单等处对象标识符的格式。 Base64 要求把每三个 8Bit的字节转换为四个 6Bit的字节(3*8 = 6*4 = 24)

mysql物理设计

╄→尐↘猪︶ㄣ 提交于 2019-12-05 09:49:47
定义数据库,及表的命名规范: 1,数据库,表及字段的命名要遵循可读性原则, 表意性原则, 长名原则(不尽量或者不使用缩写,使用长一些的命名,这样以后会看起来更明白,但是也不太非常的长) 通一 主键的名称,比如是 id或者是 _id 等,这样比较好管理。表里面的字段命名也不需要带上表名什么的。什么意思就是什么意思就好,没必要搞得这样子。不过表命名可以 可是 模块的名称 作为前缀 ,比如有一个 模块 crm ,那么 crm 模块里面 用到的表是 user ,那么表名 就起为 crm_user这样比较好识别和 管理。 个人认为尽量不要使用 uuid 的bigint ,一般的小中型项目,int无符号都可以满足了。 对于分布式的主键呢。 一般都是使用 varchar 的 UUID,这样比较方便管理和使用对于分布式来说。 但是对于一些对接其他系统的场景,ID可能会让你痛不欲生,而洗数据也是体力活儿。如果ID过长极容易产生前端显示问题,毕竟js的long是15位的。所以实际运用中ID长度也要严格把控。所以UUID 才保存为varchar类型,而不是 bigint 这样比较方便写代码和传给客户端,不用进行 类型转换了。 文/codertom(简书作者) 原文链接:http://www.jianshu.com/p/a3828b42fce8 著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”

python读取MNIST数据集

纵然是瞬间 提交于 2019-12-05 08:19:48
在学习ufldl课程时需要用到MNIST数据集,主页在 这里 。但由于该数据集为IDX文件格式,是一种用来存储向量与多维度矩阵的文件格式,不能直接读取。 mnist的结构如下 TRAINING SET LABEL FILE (train-labels-idx1-ubyte): [offset] [type] [ value ] [description] 0000 32 bit integer 0x00000801 ( 2049 ) magic number (MSB first ) 0004 32 bit integer 60000 number of items 0008 unsigned byte ?? label 0009 unsigned byte ?? label ........ xxxx unsigned byte ?? label The labels values are 0 to 9. TRAINING SET IMAGE FILE (train-images-idx3-ubyte): [offset] [type] [ value ] [description] 0000 32 bit integer 0x00000803 ( 2051 ) magic number 0004 32 bit integer 60000 number of images

C# Rotate bits to left overflow issue

左心房为你撑大大i 提交于 2019-12-05 08:02:00
I've been trying to get this to work for several days now, i've read a thousand guides and people's questions, but still, i cant find a way to do it properly. What i want to do is to rotate the bits to the left, here's an example. Original number = 10000001 = 129 What i need = 00000011 = 3 I have to rotate the bits to left a certain ammount of times (it depends on what the user types), here's what i did: byte b = (byte)129; byte result = (byte)((byte)b << 1); Console.WriteLine(result); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); The issue with this it that it

MD5消息摘要算法的C++代码实现(含注释)

我怕爱的太早我们不能终老 提交于 2019-12-05 07:57:11
#include <iostream> #include <string> using namespace std; void H_getMD5(const unsigned long Message[16]); static unsigned long State[4]; /* MD5值是由4个32bit的数组成的,也就是4个4Byte长的无符号整型 */ static unsigned long Count[2]; /* MD5算法除了要对原字符串按bit填充1和0之外,还需要在末尾附上64bit 的值,值是用字符串的bit长度 mod 2^64,这两整型是8byte,共64bit */ static unsigned char buffer[64]; /* MD5按每 512bit 一组来处理,这用来存放每组的 512bit */ /* Left_Shift表示,对x进行循环左移 n 位 */ #define Left_Shift(x,n) (((x)<<(n))|((x)>>(32-(n)))) /* F、G、H、I 4个函数是MD5的4个基本的非线性函数 */ #define F(x,y,z) (((x)&(y))|((~x)&(z))) #define G(x,y,z) (((x)&(z))|((y)&(~z))) #define H(x,y,z) ((x)^(y)^

雪花算法生成id

南笙酒味 提交于 2019-12-05 07:04:46
1、新建一个id生成的类 SnowFlake /** * @Auther: lyl * @Date: 2019/11/21 17:49 * @Description: */ public class SnowFlake { /** * 起始的时间戳 */ private final static long START_STMP = 1480166465631L; /** * 每一部分占用的位数 */ private final static long SEQUENCE_BIT = 12; //序列号占用的位数 private final static long MACHINE_BIT = 5; //机器标识占用的位数 private final static long DATACENTER_BIT = 5;//数据中心占用的位数 /** * 每一部分的最大值 */ private final static long MAX_DATACENTER_NUM = -1L ^ (-1L << DATACENTER_BIT); private final static long MAX_MACHINE_NUM = -1L ^ (-1L << MACHINE_BIT); private final static long MAX_SEQUENCE = -1L ^ (-1L <<

Redis位图

走远了吗. 提交于 2019-12-05 07:04:39
   今天有朋友问到我如何用redis记录一亿用户的一天的登录状态,其实这个问题有两种需求,不同的需求可以使用不同的方法,如果说要做详细的统计的话,那么可以使用Redis位图   我们都知道8bit = 1b = 2^-10kb, bitmap 就是通过最小的单位 bit 来进行0或者1的设置,表示某个元素对应的值或者状态。 一个bit的值,或者是0,或者是1;也就是说一个bit能存储的最多信息是2。 位图并不是一种特殊的数据结构,其实本质上是二进制字符串,也可以看做是 byte 数组。可以使用普通的 get/set 直接获取和设置整个位图的内容,也可以使用位图操作 getbit/setbit 等将 byte 数组看成「位数组」来处理。 位图的优势: 基于最小的单位bit进行存储,所以非常省空间。 设置时候时间复杂度O(1)、读取时候时间复杂度O(n),操作是非常快的 二进制数据的存储,进行相关计算的时候非常快 方便扩容 一般可以在如下场景使用: 用户签到 用户在线状态 统计活跃用户 各种状态值 常用命令 SETBIT 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 SETBIT key offset value offset 参数必须大于或等于 0 ,小于 2^32 (bit 映射被限制在 512 MB 之内)。 GETBIT 对 key 所储存的字符串值