二进制

LeetCode | 67. 二进制求和

允我心安 提交于 2020-04-08 12:50:05
给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。 示例 1: 输入: a = "11", b = "1" 输出: "100" 示例 2: 输入: a = "1010", b = "1011" 输出: "10101" 提示: 每个字符串仅由字符 '0' 或 '1' 组成。 1 <= a.length, b.length <= 10^4 字符串如果不是 "0" ,就都不含前导零。 /* 思路:对齐、相加、进位 */ class Solution { public: string addBinary(string a, string b) { int aLength = a.length(); int bLength = b.length(); int maxLength = max(aLength,bLength); string s(maxLength,'0');//最大length长度的‘0’组成 //首先对齐 if(aLength < bLength) a = string(bLength - aLength , '0') + a; else b = string(aLength - bLength , '0') + b; //然后从最低下标为1的相加、进位 for(int i = maxLength - 1;i > 0; i-

bytes 与 str 转换

折月煮酒 提交于 2020-04-07 19:50:11
Python3 最重要的特性 之一就是对 字符串 和 二进制字节 做了 明确且严格 的区分,之所以说严格,是指二者在 任何情况 下不能混用; 文本总是 Unicode,由字符串 str 表示; 二进制数据由 bytes 表示; file1 = open('data.txt', 'r') out1 = file1.read() print(type(out1)) # <class 'str'> ### 以二进制方式读取 file2 = open('data.txt', 'rb') out2 = file2.read() print(type(out2)) # <class 'bytes'> # print(out1 + out2) # TypeError: must be str, not bytes 二者相互转换 b = b'hello' s = 'world' print(type(b)) # <class 'bytes'> print(type(s)) # <class 'str'> ### btyes to str # def __init__(self, value='', encoding=None, errors='strict') bs1 = str(b, encoding='utf-8') # def decode(self, *args, **kwargs)

0.1+0.2结果却不等于0.3

拈花ヽ惹草 提交于 2020-04-07 05:33:44
先看几个简单但诡异的代码: 0.1 + 0.2 > 0.3 // true 0.1 * 0.1 = 0.010000000000000002 1000000000000000128 === 1000000000000000129 0.1加0.2为什么就不等于0.3昵?要回答这个问题,得先了解计算机内部是如何表示数的。 计算机内部如何表示数 我们都知道,计算机用位来储存及处理数据。每一个二进制数(二进制串)都一一对应一个十进制数。 1. 计算机内部如何表示整数 这里以十进制数13来展示“按位计数法”如何表示整数: 十进制值 进制 按位格式 描述 13 10 13 1x10^1 + 3x10^0 = 10 + 3 13 2 1101 1x2^3 + 1x2^2 + 0x2^1 + 1x2^0 = 8 + 4 + 0 + 1 2. 计算机内部如何表示小数 再看小数怎么用按位计数法表示,以十进制数0.625为例: 十进制值 进制 按位格式 描述 0.625 10 0.625 6x10^-1 + 2x10^-2 + 5x10^-3 = 0.6 + 0.02 + 0.005 0.625 2 0.101 1x2^-1 + 0 x2^-2 + 1x2^-3 = 1/2 + 0 + 1/8 3. 如何用二进制表示0.1 关于十进制与二进制间如何转换,这里不细说,直接给出结论: 十进制整数转二进制方法

MySQL 加密和压缩函数问题

限于喜欢 提交于 2020-04-06 16:58:05
在MySQL中,加密和压缩函数返回二进制串。对其中的许多函数而言,结果可能包含任意的字节值,如果想存储这些结果,你应该使用一个具有varbinary或者blob二进制串数据类型的列,这可避免潜在的删除尾部空白问题或者字符集转换问题。这些问题可能导致数据值的改变。一般而言,上述问题可能在你使用非二进制串数据类型(如char,varchar,text等数据类型)的情况下发生。 AES_ENCRYPT()和AES_DECRYPT() AES_ENCRYPT()和AES_DECRYPT()可以加密/解密使用官方AES算法的数据。该算法使用128位密钥来编码,但用户可以将其扩展到256位。MySQL选用128位密钥,因为这样算法实现更快,而且对大多数用户而言它也足够安全了。 AES_ENCRYPT(str,key_str)函数加密一个字符串并返回一个二进制串。AES_DECRYPT(crypt_str, key_str) 函数可以解密使用官方AES(Advanced Encryption Standard)算法加密的数据并返回原有字符串,输入变量可以是任意长度。如果输入变量为NULL,那么该函数返回结果也为NULL。 因为AES是一个块级算法,需要使用补白来编码非偶数长度的字符串。 ENCODE()和DECODE() ENCODE(str, pass_str):该函数使用pass

判断32位无符号整数二进制中1的个数

拜拜、爱过 提交于 2020-04-05 22:51:31
1、比较简单和容易理解的方法就是逐位比较法: #include <iostream> using namespace std; int findone(unsigned int n){ for(int i=0;n>0;n>>=1) i+=(n&1); return i; } int main(){ int n; cin>>n; cout<<findone(n)<<endl; return 0; } 这种方法的缺点是比较费时,时间长度取决于n的位数,时间复杂度O(n)。假如上千上万位的话,每一位都要执行一遍,所用时间就很长了。 2、最直接的优化方法,其实就是空间换时间的思想:可以预建立一个表,存放了从0~2^32每个数中1的个数,用时去查一下表就知道了。但这样显然要耗费很多的空间(至少2^32/(256/32)=512MB,哈哈,正是一般内存大小)。于是需要再优化:存放0-255每个数中1的个数,然后分段查询。如下面把32位数分为4段,每段一个字节,所以有一个256大小供查询的表: char tOne[256]="\0\1\1\2\1\2……"; //后面省略 int findone(unsigned int n){ for(int i=0;n>0;n>>=8) //每次右移8位将32位分成四段 i+=tOne[n&255]; return i; } 3、上次在阿里云笔试

CentOS7安装MySQL5.7——二进制安装包

半城伤御伤魂 提交于 2020-04-05 21:05:38
  老规矩,先总结安装步骤: 1、查看操作系统信息,下载正确的mysql安装包 2、检查操作系统环境,软件残留,依赖包,关闭防火墙等 3、开始安装 一、查看操作系统信息   不同的内核,使用的安装包是不同的,所以第一步必须先验证操作系统的内核版本,然后再去下载对应的MySQL安装包,免得在安装的时候才发现安装包不可用,下图分别展示了两种内核的CentOS7操作系统: uname -a 对应 MySQL的官网下载版本,图一中的x86_64内核应该下载x86,64-bit版本 图二中的aarch64内核应该下载ARM,64-bit版本: aarch64版本的内核多出现在华为云的服务器中,阿里云的惯用x86_64,当然,一切以实际情况为准,眼见为实。 二、检查系统环境 1、检查防火墙,不关闭防火墙, 及时数据库安装完毕,外部也无法连接 systemctl stop firewalld #关闭防火墙 systemctl disable firewalld #关闭防火墙开机自启 setenforce 0 #临时关闭selinux,此命令重启服务器后失效,如果想永久关闭,则需要修改/etc/selinux/config 永久关闭selinux的操作: vi /etc/selinux/config 修改SELINUX参数值为disabled,然后重启服务器即可 2、查看是否安装了mariadb

内容压缩

谁说胖子不能爱 提交于 2020-04-05 19:38:12
在数据库中存储字符串的时候,为了节约空间,可以先使用 gzip 对内容压缩,然后再进行存储。 gzip 在浏览器的交互中比较常见,记得,之前在 nginx 的配置上,还专门开启过 gzip 的支持。 gzip 的压缩效率如何到底如何呢?当然,肯定跟具体的数据量级也有关系。下面,我们进行 gzip 压缩操作,看一下实际的效果: 准备数据: {"name":"道道法","age":26,"blogs":[100,201,333]} 首先,我们计算原始的 json 串占用空间的大小 # 使用wc命令,-c属性表示,输出内容的byte数,输出值:44 echo "{"name":"道道法","age":26,"blogs":[100,201,333]}" | wc -c 接下来,我们对数据进行 gzip 处理,看一下效果: # 输出值:63,这确实是一个失败的例子 echo "{"name":"道道法","age":26,"blogs":[100,201,333]}" | gzip -f | wc -c 通过上面的效果可以看出, gzip 在处理小数据量的压缩时,其实效果并不好。 还有一点, gzip 压缩后的结果是没法直接存储成 string 数据的。所以,引入下一个命令 base64 ,将 raw data 转换成 string 。命令很简单,就不再赘述。介绍一下 base64

《自拍教程53》Python_adb运行tcpdump工具

狂风中的少年 提交于 2020-04-05 17:03:53
本篇文章与上一篇: Python_adb运行shell脚本类似 , 上一篇主要的技术点是讲shell等 文本文件 ,"隐藏"在Python代码里; 本篇文章主要是讲,如何将tcpdump这类 二进制可执行文件 , “隐藏”到Python代码里去。 ::: story Android手机具备在线功能的应用程序,如果出现App无法连接网络, 或者网络异常等问题,开发一般需要测试同学抓包; 还有比如Android手机 流媒体协议(HTTP,HTTP Live, RTSP)测试等,开发也经常需要测试人员抓包。 Android的一般用tcpdump命令行工具抓包, 可是,有的Android是阉割版的,很多命令行工具都未集成,比如tcpdump如果没有集成, 则要考虑adb push tcpdump /system/bin下面去, 然后通过/system/bin/tcpdump -vv -s 0 -w /sdcard/tcp.pcap 来抓包。 执行tcpdump不难,难在“隐藏”tcpdump到Python代码里去, 为什么要“隐藏”,因为我们只能将.py代码文件, 编译打包进.exe里去, 任何其他的格式的非代码文件都是无法编译打包进去, 所以先将tcpdump这个二进制文件转成.py文件, 这样就可以将tcpdump编译打包进.exe。 :::

ASCII,Unicode编码和UTF-8解惑

生来就可爱ヽ(ⅴ<●) 提交于 2020-04-05 16:58:57
ASCII,Unicode和UTF-8终于找到一个能完全搞清楚的文章了 转载:Deft_MKJing宓珂璟 https://blog.csdn.net/Deft_MKJing/article/details/79460485 平时喜欢写东西,看博客,一直对编码有些懵,今天下午也不知道看到了什么,突然想了解下,就找到了这个文章,看完真的豁然开朗,这个必须留下来做纪念。 1.ASCII 我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为 ASCII 码,一直沿用至今。 ASCII 码一共规定了128个字符的编码,比如空格SPACE是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的一位统一规定为0。 2.非ASCII编码 英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号

Integer类的学习

假如想象 提交于 2020-04-05 14:39:03
自己对照API文档,学习Integer类,如有错误,请指正 最大值 Integer.MAX_VALUE 最小值 Integer.MIN_VALUE 类原始类型 int的 类实例:int Integer.TYPE 用于表示二进制补码二进制形式的 int值的位数:32 Integer.SIZE 用于表示二进制补码二进制形式的 int值的字节数:4 Integer.BYTES Integer类类型:class java.lang.Integer Integer.class 返回指定的int值的二进制补码二进制表示中的1的个数 bitCount 比较两个 int数字值 compare(int x, int y) 来源: 51CTO 作者: keran2 链接: https://blog.51cto.com/12524267/2485002