时间压缩,让更少位数存储年月日时间
考虑到硬件存储的内存空间不是很理想,所有在做硬件开发的过程中尽量做压缩存储。今天介绍的是时间的压缩,例如:2028-08-29,可能我们在存储的时候需要用10位int类型去存它的时间戳,但是今天我想用4位string去存。没错,我就是压缩成2个字节16进制的字符串,而2028-08-29对应的就是‘3CD8’。
当然做这个压缩我们是有字节的规则的,下面是我们的时间压缩规则
两个字节,16个bit。年用5个bit,放在第一个字节后5位;月用4个bit,放在第二个字节最后4位;日用4个bit,放在第二个字节前4位。也行说到这,你也很疑惑。2028年4位数的年,可以用5个bit表示吗?没错,4位数的年2028确实不能用5个bit表示,但是我们之前就说了,做这个时间压缩我们用自己的规则,那就是年我们自取后两位,像2028我们自取28,5个bit最大为31,我想说2031年这个软件也应该升级了吧。
下面说下这个压缩规则吧,年用'&'表示、月用'o表示、日用'*'表示。年放在第一个字节后5位,月放在第二个字节后4位,日的第一位放在第一个字节的第一位,后四位放在第二个字节的前四位。下面看下具体的转换过程。
10进制:28 -- 2进制:00011100
10进制:08 -- 2进制:00001000
10进制:29 -- 2进制:00011101
那么按照上面的规则,就可以得到:00111100 11011000
那么这个两个字节对应16进制分别为:
2进制:00111100 -- 16进制:3C
2进制:11011000 -- 16进制:D8
所有得到两个字节分别是3CD8,再看下用代码怎么实现
<?php $y=28;//年 $m=8;//月 $d=29;//日$a1=($d&16)<<1; $a2=$y&31; $a=$a1|$a2;$b1=($d&15)<<4; $b2=$m&15; $b=$b1|$b2;var_dump($a); var_dump($b);$aa=dechex($a);//10进制转16进制 $bb=dechex($b);var_dump($aa); var_dump($bb);?> 运行结果: int(60) int(216) string(2) "3c" string(2) "d8"
时间压缩,让更少位数存储年月日时间相关推荐
- 模板能够让我们花更少的时间,得到更多的东西
牛顿说过,如果我比别人看得更远,那是因为我站在巨人的肩上. 这句话套用在xmind上,其中的巨人,就是各类xmind模板. 很容易理解,如果你要准备今年的军训工作,你一般会把去年的方案找出来参考,去年 ...
- 从信息论的视角看,未来科技发展的趋势。【以更少的能量,传输、处理和存储更多的信息。】
文章目录 引言 I 预备知识 1.1 发明权 1.2 奥卡姆剃刀法则的应用 II 无线电 2.1 无线电的含义 2.2 无线电可以做两件事 2.3 无线充电的原理 2.4 近距离小功率充电 引言 未来 ...
- qml 时间控件_Qt6官方最新消息:桌面样式Qt quick Controls 2支持大多控件,委托更少,运行更流畅...
Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用.而且它也可以在三种主要的台式机操作系统以及移动操作系统(如Symbian,Nokia Belle,Meego Harmat ...
- lombok 简化代码_如何编写更少,更好的代码,或Project Lombok
lombok 简化代码 我长期以来一直打算写有关Lombok的文章 ,以至于每当一个自重的Java开发人员都已经听说过它时,我可能会写它. 尽管如此,值得一提的是,如果只是提醒自己,不要犹豫,尝试性能 ...
- 如何编写更少,更好的代码,或Project Lombok
我长期以来一直打算撰写有关Lombok项目的文章 ,以至于每当一个自重的Java开发人员都已经听说过它时,我可能会写它. 尽管如此,值得一提的是,如果只是提醒自己,不要犹豫,尝试性能增强工具并查看它们 ...
- Powerful Sleep(神奇的睡眠-睡眠生物钟的秘密:如何睡得更少却睡得更好)阅读笔记...
睡眠机制 我们活着的时候,大脑会产生脑电波.脑电图仪器通过贴在人头上的一些电极读出脑电波的活动,然后把活动用图表显示出来. 睡眠过程可以分为5个过程,划分依据与大脑发出的脑电波类型. 当人清醒时,大脑 ...
- 全新的Microsoft Office 2016发布,以更少步骤更快地执行工作
微软在旧版Office基础上对软件做了升级,打造了全新的 Office 2016 办公软件,Office 2016新功能包括附带的Office移动应用程序,其中包括家庭版.个人版及专业版等多个Offi ...
- 虚拟化通过更少的硬件以实现更多性能的提升
难怪现在中小企业对虚拟化技术的无限潜力感到兴奋不已.虚拟化可以提供服务器效率将近四倍,存储硬件能力提供近1/3.通过那些能够对硬件进行分区创建多个虚拟操作环境的软件,虚拟化让中小企业用户使用更少的硬件 ...
- 如何消耗更少资源?Unity优化技巧(上)
什么是优化? 为了达成相同目标,寻求并采用消耗更少资源的办法的过程 对游戏来说通过特别的技巧,在实现相同的表现效果.流畅度的前提下对硬件机能的需求更低.更平民化.或者在相同性能的平台上,实现更好的画面 ...
最新文章
- 2020 北京智源大会首日精华速递
- 创业公司这三年,Java老本都快吃完了!
- 使用View的getWidth(),getHeight()方法返回0的问题
- 播放提示音+页面右下角提示框
- MATLAB图自编码器
- Wing IDE 5.0 破解之寻找注册码
- 区块链共识机制优缺点对比都是什么
- android 获取屏幕的宽和高
- C语言 16进制转float
- Android ImageButton使用详解(系列教程四)
- 企业微信加密消息体_企业微信和个人微信有什么区别?个人微信可以接收企业微信消息吗?...
- 基于Springboot的个人博客网站系统——可用于毕业设计(课程设计)
- python三年a班的成绩_Python学习小结
- 软考笔记——5.2网络安全技术
- 【无聊之作】①CSS测试三基色融合测试是否能得到新颜色(白、黄、橙等);②CSS赋值英文red、green、blue与三基色RGB对应测试
- Web端调用本地打印机-JS实现
- springboot全省中小学师生共建习题交流与指导平台毕业设计源码031619
- linux系统vmd软件如何使用,VMD使用
- 二级域名需要备案吗?
- [基于STM32底盘控制与ROS上层导航小车制作] 第五节 实现STM32与ubuntu系统下的ROS串口DMA通信,传输底盘速度等信息
热门文章
- 【c语言】一个整数加上100后是一个完全平方数,再加上168又是一个完全平方数,问该数是多少?
- 从开源小白到 Apache Member,阿里技术小哥的成长之路
- Js逆向教程22-AST 抽象语法树babel安装
- python设置折线图标题字体为宋体_python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)...
- Java实现设计模式之——单例模式
- iOS11下UITableView侧滑删除详解
- Unity之三维空间多点箭头导航
- syncthing开源工具,同步文件内容,入门操作简要指导
- 大数据hbase nosql数据库
- x64 各个cr控制寄存器 含义/用途 (cr0 cr1 cr2 cr3 cr4 cr8)