考虑到硬件存储的内存空间不是很理想,所有在做硬件开发的过程中尽量做压缩存储。今天介绍的是时间的压缩,例如: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"

时间压缩,让更少位数存储年月日时间相关推荐

  1. 模板能够让我们花更少的时间,得到更多的东西

    牛顿说过,如果我比别人看得更远,那是因为我站在巨人的肩上. 这句话套用在xmind上,其中的巨人,就是各类xmind模板. 很容易理解,如果你要准备今年的军训工作,你一般会把去年的方案找出来参考,去年 ...

  2. 从信息论的视角看,未来科技发展的趋势。【以更少的能量,传输、处理和存储更多的信息。】

    文章目录 引言 I 预备知识 1.1 发明权 1.2 奥卡姆剃刀法则的应用 II 无线电 2.1 无线电的含义 2.2 无线电可以做两件事 2.3 无线充电的原理 2.4 近距离小功率充电 引言 未来 ...

  3. qml 时间控件_Qt6官方最新消息:桌面样式Qt quick Controls 2支持大多控件,委托更少,运行更流畅...

    Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用.而且它也可以在三种主要的台式机操作系统以及移动操作系统(如Symbian,Nokia Belle,Meego Harmat ...

  4. lombok 简化代码_如何编写更少,更好的代码,或Project Lombok

    lombok 简化代码 我长期以来一直打算写有关Lombok的文章 ,以至于每当一个自重的Java开发人员都已经听说过它时,我可能会写它. 尽管如此,值得一提的是,如果只是提醒自己,不要犹豫,尝试性能 ...

  5. 如何编写更少,更好的代码,或Project Lombok

    我长期以来一直打算撰写有关Lombok项目的文章 ,以至于每当一个自重的Java开发人员都已经听说过它时,我可能会写它. 尽管如此,值得一提的是,如果只是提醒自己,不要犹豫,尝试性能增强工具并查看它们 ...

  6. Powerful Sleep(神奇的睡眠-睡眠生物钟的秘密:如何睡得更少却睡得更好)阅读笔记...

    睡眠机制 我们活着的时候,大脑会产生脑电波.脑电图仪器通过贴在人头上的一些电极读出脑电波的活动,然后把活动用图表显示出来. 睡眠过程可以分为5个过程,划分依据与大脑发出的脑电波类型. 当人清醒时,大脑 ...

  7. 全新的Microsoft Office 2016发布,以更少步骤更快地执行工作

    微软在旧版Office基础上对软件做了升级,打造了全新的 Office 2016 办公软件,Office 2016新功能包括附带的Office移动应用程序,其中包括家庭版.个人版及专业版等多个Offi ...

  8. 虚拟化通过更少的硬件以实现更多性能的提升

    难怪现在中小企业对虚拟化技术的无限潜力感到兴奋不已.虚拟化可以提供服务器效率将近四倍,存储硬件能力提供近1/3.通过那些能够对硬件进行分区创建多个虚拟操作环境的软件,虚拟化让中小企业用户使用更少的硬件 ...

  9. 如何消耗更少资源?Unity优化技巧(上)

    什么是优化? 为了达成相同目标,寻求并采用消耗更少资源的办法的过程 对游戏来说通过特别的技巧,在实现相同的表现效果.流畅度的前提下对硬件机能的需求更低.更平民化.或者在相同性能的平台上,实现更好的画面 ...

最新文章

  1. 2020 北京智源大会首日精华速递
  2. 创业公司这三年,Java老本都快吃完了!
  3. 使用View的getWidth(),getHeight()方法返回0的问题
  4. 播放提示音+页面右下角提示框
  5. MATLAB图自编码器
  6. Wing IDE 5.0 破解之寻找注册码
  7. 区块链共识机制优缺点对比都是什么
  8. android 获取屏幕的宽和高
  9. C语言 16进制转float
  10. Android ImageButton使用详解(系列教程四)
  11. 企业微信加密消息体_企业微信和个人微信有什么区别?个人微信可以接收企业微信消息吗?...
  12. 基于Springboot的个人博客网站系统——可用于毕业设计(课程设计)
  13. python三年a班的成绩_Python学习小结
  14. 软考笔记——5.2网络安全技术
  15. 【无聊之作】①CSS测试三基色融合测试是否能得到新颜色(白、黄、橙等);②CSS赋值英文red、green、blue与三基色RGB对应测试
  16. Web端调用本地打印机-JS实现
  17. springboot全省中小学师生共建习题交流与指导平台毕业设计源码031619
  18. linux系统vmd软件如何使用,VMD使用
  19. 二级域名需要备案吗?
  20. [基于STM32底盘控制与ROS上层导航小车制作] 第五节 实现STM32与ubuntu系统下的ROS串口DMA通信,传输底盘速度等信息

热门文章

  1. 【c语言】一个整数加上100后是一个完全平方数,再加上168又是一个完全平方数,问该数是多少?
  2. 从开源小白到 Apache Member,阿里技术小哥的成长之路
  3. Js逆向教程22-AST 抽象语法树babel安装
  4. python设置折线图标题字体为宋体_python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)...
  5. Java实现设计模式之——单例模式
  6. iOS11下UITableView侧滑删除详解
  7. Unity之三维空间多点箭头导航
  8. syncthing开源工具,同步文件内容,入门操作简要指导
  9. 大数据hbase nosql数据库
  10. x64 各个cr控制寄存器 含义/用途 (cr0 cr1 cr2 cr3 cr4 cr8)