C语言获取当前时间并转换为字符数组代码详解及Java实现
这段代码的作用是获取当前系统时间,并将其转换为一个长度为2的字符数组v67。
具体的,代码的执行过程如下:
-
char v67[2];声明一个长度为2的字符数组v67,用于存储最终的结果。 -
gettimeofday(&tv, 0);通过系统调用获取当前时间,并将其保存在tv结构体中。 -
v67[1] = 0;将v67数组的第二个元素赋值为0,这是为了确保v67是一个以'\0'结尾的字符串。 -
v18 = v67;将指针v18指向v67数组的第一个元素。 -
v19 = 0x3E8LL * tv.tv_sec + tv.tv_usec / 0x3E8;将tv的秒数乘以1000,加上微秒数除以1000得到毫秒数,并将其保存在v19变量中。 -
do { ... } while (v19);使用do-while循环,将v19转换为字符串并保存在v67数组中。 -
v22 = v20;将指针v22指向v67数组的第一个元素。
其中,循环的具体实现如下:
-
v20 = v18;将指针v20指向当前的v18位置。 -
*v18-- = v19 % 0xA + 0x30;将v19对10取模的结果加上'0'的ASCII码值,赋值给v18指向的位置。然后将v18指针向前移动一位。 -
v19 /= 0xALL;将v19除以10。 -
LODWORD(v21) = v19 | HIDWORD(v19);将v19的低32位和高32位取或,将结果保存在v21变量中。
循环的终止条件是v19不为0,即v19已经被转换成了字符串,并保存在v67数组中。
用Java实现如下:
import java.util.Calendar;
import java.util.Date;
public class Main {
public static void main(String[] args) {
char[] v67 = new char[2];
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
long v19 = 1000 * cal.getTimeInMillis() + cal.get(Calendar.MILLISECOND);
v67[1] = 0;
char[] v18 = v67;
do {
char[] v20 = v18;
v18[0] = (char) (v19 % 10 + '0');
v19 /= 10;
v18 = new char[v18.length + 1];
System.arraycopy(v20, 0, v18, 1, v20.length);
} while (v19 != 0);
char[] v22 = v18;
System.out.println(v22);
}
}
原文地址: https://www.cveoy.top/t/topic/mmPP 著作权归作者所有。请勿转载和采集!