系统时间转换为bcd码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | #include "stdafx.h" #include <stdio.h> #include <time.h> #include <malloc.h> /* 获取系统时间 */ void get_sys_time( int *year, int *mon, int *day, int *hour, int *min, int *sec, int *wday) { struct tm *timeinfo; time_t now; time (&now); timeinfo = localtime (&now); *year = timeinfo->tm_year + 1900; *mon = timeinfo->tm_mon + 1; *day = timeinfo->tm_mday; *hour = timeinfo->tm_hour; *min = timeinfo->tm_min; *sec = timeinfo->tm_sec; *wday = timeinfo->tm_wday; } /* 将十进制数转换成16进制数 */ void dec2hex( int input, unsigned char *output) { int in_tmp = 0; in_tmp = input / 10; in_tmp <<= 4; in_tmp |= input % 10; memcpy (output, &in_tmp, 1); } /* 将当前的系统时间转换为bcd格式 */ void time_bcd(unsigned char *timebcd) { int year, mon, day, hour, min, sec, wday; unsigned char *tmp = (unsigned char *) malloc (1 * sizeof (unsigned char )); get_sys_time(&year, &mon, &day, &hour, &min, &sec, &wday); dec2hex(year / 100, tmp); memcpy (timebcd, tmp, 1); dec2hex(year % 100, tmp); memcpy (timebcd + 1, tmp, 1); dec2hex(mon, tmp); memcpy (timebcd + 2, tmp, 2); dec2hex(day, tmp); memcpy (timebcd + 3, tmp, 3); dec2hex(hour, tmp); memcpy (timebcd + 4, tmp, 4); dec2hex(min, tmp); memcpy (timebcd + 5, tmp, 5); dec2hex(sec, tmp); memcpy (timebcd + 6, tmp, 6); dec2hex(wday, tmp); memcpy (timebcd + 7, tmp, 7); free (tmp); } /* 输出指定内存地址空间的16进制值 */ void my_print(unsigned char *buf, int len) { int i = 0; while (i<len) { printf ( "%02x" , buf[i]); i++; } printf ( "\n" ); } #include <iostream> using namespace std; int _tmain( int argc, _TCHAR* argv[]) { unsigned char ttmp[16]; time_bcd(ttmp); my_print(ttmp, 8); system ( "PAUSE" ); return 0; } |
关于BCD、ASCII和BINARAY储存示例:2015
BCD:0x20 0x15
BINARY:0x14 0x0f
ACSII:0x320x300x310x35
2的ASCII码为十六进制数32,十进制数50。
部分数字的ASCII码如下:
数字0的ASCII码为十六进制数30,十进制数48
数字1的ASCII码为十六进制数31,十进制数49
数字2的ASCII码为十六进制数32,十进制数50
数字3的ASCII码为十六进制数33,十进制数51
数字4的ASCII码为十六进制数34,十进制数52
数字5的ASCII码为十六进制数35,十进制数53
数字6的ASCII码为十六进制数36,十进制数54
数字7的ASCII码为十六进制数37,十进制数55
数字8的ASCII码为十六进制数38,十进制数56
数字9的ASCII码为十六进制数39,十进制数57
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了