二进制

unity xlua protobuf

99封情书 提交于 2020-02-27 01:52:39
https://www.jianshu.com/p/d997e1f5e2ed 项目后期接入xlua,做代码的热更新。其中项目要求是任何逻辑都可以被热更,也可以完全的新增任何功能。其中消息用的是protobuf。 因为google 的protobuf c# 版本需要先对消息进行序列化好,然后作为c# 类使用的。但是这样非常的不利于做代码的热更新。 所以决定把pb接入到xlua里。看了下xlua 作者已经提供了集成pb的GitHub。 链接 https://github.com/chexiongsheng/build_xlua_with_libs 关于集成其他库 git上说的很清楚了。 这要是记录一下怎么使用 xlua hotfix 等配置好之后,在c# 侧初始化的时候调用 Luaenv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProfobuf); main.lua 加载protobufmain.lua protobufmain.lua : -- 核心解析 pb = require "pb" -- 添加protoc protoc = require "protobuf.protoc" -- 监听消息-》解析 -- 此处是监听c# 原有的网络层回调,是一串二进制消息体 luadencode = require "protobuf.prasemsg"

16进制颜色与RGB颜色

梦想与她 提交于 2020-02-26 22:59:13
参考: http://tianle.name/wlyy/275 网页中表示颜色的常见方法有: 1.Color Name(颜色名称) 用颜色名称来指定颜色,这种方法简洁直观,一看就知道是什么颜色,但最大的缺点是颜色的名称太少,不能有效的表示一些较丰富的颜色 2.RGB(RGB记法) 3.HEX(十六进制记法) RGB记法和十六进制记法都能很好的表示出一些较为丰富的颜色,但是我们用到16进制的比较多,语法为#RRGGBB,下面说下我刚研究出来的转换方法: 我们都知道 RGB记法rgb(255,255,255)=十六进制记法#FFFFFF,都表示白色 RGB记法rgb(0,0,0)=十六进制记法#000000,都表示黑色 那么RGB记法rgb(100,150,245)=十六进制记法#?????? RGB的取值都是0~255,HEX的取值为0123456789ABCDEF这16个字符,下面看看RGB-HEX对照表: RGB HEX 0 00 1 01 2 02 3 03 4 04 5 05 6 06 7 07 8 08 9 09 10 0A 11 0B 12 0C 13 0D 14 0E 15 0F 16 10 17 11 18 12 19 13 20 14 21 15 22 16 23 17 24 18 25 19 26 1A 27 1B 28 1C 29 1D 30 1E 31 1F

子网掩码的介绍,PREFIX的位数说明

邮差的信 提交于 2020-02-26 17:15:36
255.255.255.0用二进制表示为11111111.11111111.11111111.00000000, 24个1。所以说网络位是24位。PREFIX=24 255.255.255.192用二进制表示为11111111.11111111.11111111.11000000, 26个1。所以说网络位是26位。PREFIX=26 255.255.255.128用二进制表示为11111111.11111111.11111111.10000000, 26个1。所以说网络位是25位。PREFIX=25 255.255.255.224用二进制表示为11111111.11111111.11111111.11100000, 27个1。所以说网络位是27位。PREFIX=27 255.255.255.240用二进制表示为11111111.11111111.11111111.11110000, 28个1。所以说网络位是28位。PREFIX=28 255.255.255.248用二进制表示为11111111.11111111.11111111.11111000, 29个1。所以说网络位是29位。PREFIX=29 如图,在安装系统时,这样设置,表示,ip段/24 后面的24即网络位 即字网掩码 255.255.255.0 来源: oschina 链接: https://my.oschina

C语言中的位操作

江枫思渺然 提交于 2020-02-26 14:30:25
运算符 含义 描述 << 左移 将一个数的各二进制位全部左移N位,高位舍弃,低位补0。 >> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0。 & 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。 l 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1,否则为0。 ~ 按位取反 对每个二进制进行取反,0变1,1变0。 ^ 按位异或 两个相应二进制位相同取0,不同取1 来源: CSDN 作者: 西海岸看日出 链接: https://blog.csdn.net/qq_38236355/article/details/104515020

十进制与二进制快速转换计算心得

旧城冷巷雨未停 提交于 2020-02-26 13:29:08
[TOC] 十进制与二进制快速转换计算心得 本文来自: https://blog.csdn.net/bandenger/article/details/79842035 在基础的算法中,我们学的基本都是模二运算法则,但是已经熟悉了模二运算法则的时候,每次都要计算就未免觉得太繁琐,所以,这里我总结了一套自己的运算心得供大家学习。 准备工作: 首先我们需要背诵2的2到10的幂次方,这个我相信对大家都不难,它们分别是: 1、 2、4、8、16、32、64、128、 256、 512 、1024。 这些对应的二进制分别: 1、10、 100 、1000 、10000 、100000、 1000000 、10000000、 100000000 、1000000000. 十进制转二进制: 接下来,就是开始心算的时候,比如: 9=8+1 对应二进制 1001 17=16+1 对应二进制 10001 34=32+2 对应二进制 100010 245=128+64+32+16+4+1 对应二进制 11110101 每次从高位依次往下写,比如34 从32 往下写 依次是 16 、8 、4 、2 、1 在该位数上分解的数有该数就写1,没有就写0。 二进制转十进制: 同理,也是从高位开始计算,先数二进制数比如: 101010 6个数 就从2的(6-1)次方开始计算 分别是32+8+2=42 找到最大位

9.Erlang 二进制操作

萝らか妹 提交于 2020-02-26 11:03:53
一,为什么使用二进制类型? 使用低级别的编程更加可靠,而且相比于元组和列表更加节省空间。有时候大量结构化的数据必须在计算机之间相互移动,我们就需要确保数据尽可能高效传播,利用一切可以存储的位置,每个位置尽可能含有较多的信息。 二,二进制类型 1.内置函数转化二进制 1>A={test,1,2,3,[1,2,3]}. {test,1,2,3,[1,2,3]} 2> Bin1=term_to_binary(A). <<131,104,5,100,0,4,116,101,115,116,97,1,97,2,97,3,107,0, 3,1,2,3>> 3> Term1=binary_to_term(Bin1). {test,1,2,3,[1,2,3]} 4> B=[1,2]. [1,2] 5> Bin2=list_to_binary(B). <<1,2>> 6> Lis1=binary_to_list(Bin2). [1,2] 7> Lis1=binary_to_list(Bin1). ** exception error: no match of right hand side value [131,104,5,100,0,4,116,101,115,116,97,1,97,2,97,3,107,0,3, 1,2,3] 2.判断一个数据是不是二进制,可以使用is_binary 8> is

用Python编写的CSV文件每行之间都有空行

こ雲淡風輕ζ 提交于 2020-02-26 07:39:45
import csv with open('thefile.csv', 'rb') as f: data = list(csv.reader(f)) import collections counter = collections.defaultdict(int) for row in data: counter[row[10]] += 1 with open('/pythonwork/thefile_subset11.csv', 'w') as outfile: writer = csv.writer(outfile) for row in data: if counter[row[10]] >= 504: writer.writerow(row) 此代码读取 thefile.csv ,进行更改,并将结果写入 thefile_subset1 。 但是,当我在Microsoft Excel中打开生成的csv时,每条记录后都有一个额外的空白行! 有没有办法使它不放在多余的空白行? #1楼 以二进制模式“ wb”打开文件在Python 3+中不起作用。 或者更确切地说,您必须在编写数据之前将数据转换为二进制。 那只是一个麻烦。 相反,您应该将其保留在文本模式下,但是将换行符替换为空。 像这样: with open('/pythonwork/thefile_subset11.csv',

什么是js-xiaoxu

大憨熊 提交于 2020-02-26 02:50:08
JavaScript基础语法 HTML :标记语言 JavaScript :编程语言 序言 JavaScript发展历史(JS) JavaScript是什么 JavaScript能干什么 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版,这是世界上第一款比较成熟的网络浏览器,轰动一 时。但是这是一款名副其实的浏览器–只能浏览页面,浏览器无法与用户互动,当时解决这个问题有两个办法,一个是采 用现有的语言,许它们直接嵌入网页。另一个是发明一种全新的语言。 liveScript ==> javaScript ==> ECMAscript 2. 1995年Sun公司将Oak语言改名为Java,正式向市场推出。Sun公司大肆宣传,许诺这种语言可以"一次编写,到处运 行"(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。 3. 网景公司动了心,决定与Sun公司结成联盟 4. 34岁的系统程序员Brendan Eich登场了。1995年4月,网景公司录用了他,他只用10天时间就把Javascript设计出 来了。(多肽语言) 5. (1)借鉴C语言的基本语法; (2)借鉴Java语言的数据类型和内存管理; (3)借鉴Scheme语言,将函数提升到"第一等 公民"(first class)的地位; (4)借鉴Self语言,使用基于原型

mariadb-10.5.1二进制安装

烈酒焚心 提交于 2020-02-26 02:15:21
一、本博文内容简介: 有关mariaDB的介绍,大家可以移步到百度百科或者mariaDB官网进行查看。 本文主要是介绍mariaDB二进制包如何进行安装,以及mariaDB服务安装后的如何启动以及账户安全设置等等 mariaDB截止2020-02-24日,目前发部的最新的二进制版本是mariadb-10.5.1-linux-glibc_214-x86_64.tar.gz。本文采用这个版本的二进制安装。 二、二进制安装mariadb: 官方二进制安装文档 https://mariadb.com/kb/en/installing-mariadb-binary-tarballs/ 下载地址 https://downloads.mariadb.com/MariaDB/mariadb-10.5/bintar-linux-glibc_214-x86_64/mariadb-10.5.1-linux-glibc_214-x86_64.tar.gz 创建数据目录: useradd mysql -s /sbin/nologin -M mkdir /data/mysql/mysql3306/{data,binlog,logs,tmp} -p cd /data/mysql/;chown -R mysql.mysql mysql3306 安装相关依赖和下载解压: yum install libaio.x86

Beetle在TCP通讯中使用二进制序列化对象传输

筅森魡賤 提交于 2020-02-26 02:10:00
组件发送的对象都必须实现IMessage接口,通过实现接口来描述一个对象的序列化过程;自定义读写流的好处就是可以得到更好的性能,但缺点也相对明显的就是工作量比较多.在很多应用场合下所追求的并不是性能第一,而是希望省下这些烦锁的工作,为了应付这种需要组件可以实现一个简单的消息适配器来完成这样的功能.下面通过扩展的方式来实现组件对.net二进制序列化对象转输的支持. 定义协议格式 在TCP下进行数据交互通讯首先是要制定一个通讯的应用协议,由于组件提供基于结束符和头大小描述的基础分析器,可以从这基础分析协中派生下来.似下通过一个图来描述协议的具体细节 协议描述比较简单消息头是4个字节用于存储消息的总长度,而序列化存储的数据则是总长度减去头4位. 实现具体的分析器和消息适配器 协议制定后就可以进行分析器的实现,由于采用头4字节描述大小,所以分析器从HeadSizeOfPackage基础类派生下载重写相关方法即可;完整实现代码如下: public class BinaryFormatterPackage:HeadSizeOfPackage { public BinaryFormatterPackage() { } public BinaryFormatterPackage(TcpChannel channel) : base(channel) { } public override