unsigned

分配内存

本秂侑毒 提交于 2020-03-03 03:30:25
分配内存的方法 面试中比较见问的一个问题。 注意: 只有calloc函数会将分配内存初始化为0 new是C++独有的,其是运算符,而不是函数。 下面对其分别进行介绍: malloc 函数: void *malloc(unsigned int size) 1 在内存的动态分配区域中分配一个长度为size的连续空间,如果分配成功,则返回所分配内存空间的首地址,否则返回NULL,申请的内存不会进行初始化。 2)calloc 函数: void *calloc(unsigned int num, unsigned int size) 1 按照所给的数据个数和数据类型所占字节数,分配一个 num * size 连续的空间。calloc申请内存空间后,会自动初始化内存空间为 0,但是malloc不会进行初始化,其内存空间存储的是一些随机数据。 3)realloc 函数: void *realloc(void *ptr, unsigned int size) 1 增加或减少以前分配区的长度。当增加长度时,可能需要将以前分配区的内容移到另一个足够大的区域,以便在尾端提供增加的存储区,而新增的区域内的初始值不确定。 4)new是动态分配内存的运算符: 自动计算需要分配的空间,在分配类类型的内存空间时,同时调用类的构造函数,对内存空间进行初始化,即完成类的初始化工作

数据类型转换

一个人想着一个人 提交于 2020-03-02 17:57:09
//Byte数组转CString CString Communal::ByteArrayToCString(CByteArray* btArray) { CString cs1,str; cs1.Empty(); int lon = btArray->GetCount(); for (int i = 0;i<lon;i++) { unsigned char x = (unsigned char)btArray->GetAt(i); str.Format("%02x",x); cs1+=str.MakeUpper(); } return cs1; } //短整型数据转Byte数组 //unsigned char* Communal::int16ToBytes(short int n) //{ // unsigned char* pBuffer; // pBuffer = new unsigned char[2]; // int num = n & 0xFFFF; // pBuffer[0] = (byte)(num >> 8); // pBuffer[1] = (byte)(num & 0x00FF); // return pBuffer; //} ////整型数据转Byte数组 //unsigned char* Communal::int32ToBytes(int n) //{ /

JPEG图像密写研究(一) JPEG图像文件结构

不问归期 提交于 2020-03-01 20:37:56
【转载】转载自http://www.cnblogs.com/leaven/archive/2010/04/06/1705846.html JPEG 压缩编码算法的主要计算步骤如下: (0) 8*8 分块。 (1) 正向离散余弦变换 (FDCT) 。 (2) 量化 (quantization) 。 (3) Z 字形编码 (zigzag scan) 。 (4) 使用差分脉冲编码调制 (DPCM) 对直流系数 (DC) 进行编码。 (5) 使用行程长度编码 (RLE) 对交流系数 (AC) 进行编码。 (6) 熵编码。 一、 JPEG 文件格式介绍 JPEG 文件使用的数据存储方式有多种。最常用的格式称为 JPEG 文件交换格式( JPEG File Interchange Format , JFIF )。而JPEG文件大体上可以分成两个部分:标记码(Tag)和压缩数据。 标记码由两个字节构成,其前一个字节是固定值 0xFF ,后一个字节则根据不同意义有不同数值。在每个标记码之前 还可以添加数目不限的无意义的0xFF填充,也就说连续的多个0xFF可以被理解为一个0xFF,并表示一个标记码的开始。而在一个完整的两字节的标记码后,就是该标记码对应的压缩数据流,记录了关于文件的诸种信息。 常用的标记有 SOI 、 APP0 、 DQT 、 SOF0 、 DHT 、 DRI 、 SOS 、

【C/C++】_cmpublic.h

荒凉一梦 提交于 2020-03-01 08:03:03
# ifndef _cmpublic_H # define _cmpublic_H # include <stdio.h> # include <utime.h> //#include <curl/curl.h> # include <string.h> # include <strings.h> # include <ctype.h> # include <stdlib.h> # include <unistd.h> # include <fcntl.h> # include <limits.h> # include <time.h> # include <math.h> # include <stdarg.h> # include <errno.h> # include <signal.h> # include <netdb.h> # include <locale.h> # include <dirent.h> # include <termios.h> # include <pthread.h> # include <semaphore.h> # include <sys/stat.h> # include <sys/time.h> # include <sys/types.h> # include <sys/socket.h> # include <netinet/in

MySQL数据表操作

懵懂的女人 提交于 2020-02-29 01:56:54
创建数据表 打开数据库 USE 数据库名称 mysql> USE D1; Database changed 使用 USE D1 ;表示打开数据库D1,我们可以通过 SELECT DATABASE(); 来查看当前打开的数据库: mysql> SELECT DATABASE(); +------------+ | DATABASE() | +------------+ | d1 | +------------+ 1 row in set (0.00 sec) 创建数据表 CREATE TABLE [IF NOT EXISTS] table_name ( column_name datatype, ...... ) 这个结构很简单,对于[IF NOT EXISTS],在第一篇 “MySQL基本操作” 已经说明,这里不赘述。 我们来创建一个数据表 table1 : mysql> CREATE TABLE table1( -> username VARCHAR(20), -> age TINYINT UNSIGNED, -> salary FLOAT(8,2) UNSIGNED -> ); Query OK, 0 rows affected (0.74 sec) 注意这里的UNSIGNED,表示无符号值,即是正数,可回顾 “MySQL基本数据类型” 查看,TINYINT UNSIGNED

RFC笔记—Neighbor Discovery for IP version 6 (IPv6)

末鹿安然 提交于 2020-02-28 14:09:52
Router Solicitation Message Source Address An IP address assigned to the sending interface, or the unspecified address if no address is assigned to the sending interface. Destination Address Typically the all-routers multicast address. 源IPv6地址:在lwip中,要么是链路本地地址,要么是任意地址IP6_ADDR_ANY6,也就是全零地址。 目的IPv6地址:所有路由器多播地址,FF02::2(多播地址FF::/8,第一个02表示scope是链路本地,第二个02是所有路由器) Router Advertisement Message 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Linux 网络编程API(一):基础

旧街凉风 提交于 2020-02-28 09:55:40
Linux网络API主要分为三大类: socket地址API socket基础API 网络信息API socket地址API 大端字节序指一个整数的高位字节存储在内存的低地址处,低位字节存储在内存的高地址处, 反之小端字节序指整数的高位字节存储在内存的高地址处,而低位字节则存储在内存的低地址处 PC大多采用小端字节序,而网络字节序为大端字节序,解决方法为:发送端要把发送的数据转化成大端字节序数据后发送,而接收端知道对方传送过来的数据是大端字节序,再将其转化为小端字节序使用 Linux提供了以下四种API来进行主机字节序和网络字节序的转换 # include <netinet/in.h> unsigned long int htonl ( unsigned long int hostlong ) ; unsigned short int htons ( unsigned short int hostshort ) ; unsigned long int ntohl ( unsigned long int netlong ) ; unsigned short int ntohs ( unsigned long int netshort ) ; htonl 表示“host to network long”,即将长整型主机字节序转化为网络字节序,反之亦然 长整型通常用来转换IP地址

printf的格式很长的论点是什么?

筅森魡賤 提交于 2020-02-27 20:51:33
printf 函数采用参数类型,例如 %d 或 %i 用于 signed int 。 但是,我没有看到任何 long 价值的东西。 #1楼 如果您打算像我一样打印 unsigned long long ,请使用: unsigned long long n; printf("%llu", n); 对于所有其他组合,我相信您使用 printf手册中 的表格,对于您尝试打​​印的任何类型的行,然后是列标签(就像我上面的 printf("%llu", n) )。 #2楼 在大多数平台上, long 和 int 的大小相同(32位)。 不过,它确实有自己的格式说明符: long n; unsigned long un; printf("%ld", n); // signed printf("%lu", un); // unsigned 对于64位,你需要很 long long : long long n; unsigned long long un; printf("%lld", n); // signed printf("%llu", un); // unsigned 哦,当然,它在Windows中有所不同: printf("%l64d", n); // signed printf("%l64u", un); // unsigned 通常,当我打印64位值时

MD5加密算法

瘦欲@ 提交于 2020-02-27 20:17:28
转载: https://blog.csdn.net/mp624183768/article/details/80575843 全称:message-digest algorithm 5 翻译过来就是:信息 摘要 算法 5 MD5消息摘要算法,属Hash算法一类。MD5算法对输入任意长度的消息进行运行,产生一个128位的消息摘要。 以下所描述的消息长度、填充数据都以位(Bit)为单位,字节序为小端字节。 1.特点 (1)长度固定: 不管多长的字符串,加密后长度都是一样长 作用:方便平时信息的统计和管理 (2)易计算: 字符串和文件加密的过程是容易的. 作用: 开发者很容易理解和做出加密工具 (3)细微性: 一个文件,不管多大,小到几k,大到几G,你只要改变里面某个字符,那么都会导致MD5值改变. 作用:很多软件和应用在网站提供下载资源,其中包含了对文件的MD5码,用户下载后只需要用工具测一下下载好的文件,通过对比就知道该文件是否有过更改变动. (4)不可逆性: 你明明知道密文和加密方式,你却无法反向计算出原密码. 作用:大大提高了数据的安全性 2.撞库破解 这是概率极低的破解方法,原理就是: (1)建立一个大型的数据库,把日常的各个语句,通过MD5加密成为密文,不断的积累大量的句子,放在一个庞大的数据库里. (2)比如一个人拿到了别人的密文,想去查询真实的密码

【CUDA】BRG2GRAY

若如初见. 提交于 2020-02-26 22:27:59
最近刚接触CUDA,先写一些简单的示例练习下。 在图像处理中,三通道彩色图像BGR到灰度图Gray,常见的一般有两种计算方式,一种是基于浮点数计算,一种是基于性能优化的通过移位的整数计算。 浮点数计算公式为: gray = 0.1140 * B + 0.5870 * G + 0.2989 * R 整数计算公式为: gray = (1868 * B + 9617 * G + 4899 * R) >> 14 ,1868从二进制的角度看,向右移位14位,相当于 ,以此类推。 下面的代码主要参考[2]进行修改得到: 头文件: funset.hpp #include <cuda_runtime.h> // For the CUDA runtime routines (prefixed with "cuda_") #include <device_launch_parameters.h> #include <cstdlib> #include <vector> int bgr2gray_cpu(const unsigned char* src, int width, int height, unsigned char* dst); int bgr2gray_gpu(const unsigned char* src, int width, int height, unsigned char*