在openSuse系统桌面小部件中有一个二进制时钟,当时虽然了解二进制但也看不懂,后来还在火车上还遇到有人带二进制手表,作为程序员的我感觉很酷呀ヾ(゚∀゚ゞ)
于是上网查了一下如何看二进制时钟,终于会看了ヾ(*´▽‘*)ノ
4行6列版的二进制时钟,其中每格代表二进制的0或1,每列从上到下(4格)代表一个二进制数对应的十进制数(如图1时间为22:06:40,其中第一列0010=2,第二列0010=2,第三列为0000=0,第四列为0110=6,第五列为0100=4,第六列0000=0)
会看二进制时钟后,就想怎么用代码实现二进制时钟,怎么把时间转换为二进制时钟显示出来。
实现思路是将时间HHmmss中的每一位代表的二进制放到数组中,再将所有数组组成4行6列的二维数组,之后根据二维数组在界面中展示就可以了;
例:时间 12:34:56,其中1转换为[0 ,0, 0, 1],2转换为[0010],3转换为[0011],4转换为[0100],5转换为[0101],6转换为[0110],之后放到4行6列的二维数组中,最后在界面中展示。
// 12:34:56 二进制时钟二维数组
[
[0, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 1, 1]
[0, 1, 1, 0, 0, 1]
[1, 0, 1, 0, 1, 0]
]
//[1, 2, 3, 4, 5, 6]
第一版完整实现代码(Java swing)
import java.awt.Color;
import java.awt.Graphics;
import java.text.SimpleDateFormat;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;
/**
* BinaryClock
* ---------------
* [ 1 2:3 4:5 6 ]
* ---二进制时钟----
* [ 0 0 0 0 0 0 ]
* [ 0 0 0 1 1 1 ]
* [ 0 1 1 0 0 1 ]
* [ 1 0 1 0 1 0 ]
* ---------------
* @author www@yiynx.cn
* @version 0.0.5
*/
public class BinaryClock extends JPanel