系統時間轉換為bcd碼


#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;
}

  

關於BCDASCIIBINARAY儲存示例:2015

BCD0x20 0x15

BINARY0x14 0x0f

ACSII0x320x300x310x35

 

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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM