char型数据里面的数据是以16进制数存储的,每个char型数据的可能值是从0x00~0xff(表示为2进制范围是从00000000~11111111)的16进制数,即每个char型数据里面能存储8位的数据。如果存储类型为BCD码,那也就是按照2进制来存储数据。对应表如下:

Int  二进制  BCD码  Hex 
0    0000    0000    0
1    0001    0001    1
2    0010    0010    2
3    0011    0011    3
4    0100    0100    4
5    0101    0101    5
6    0110    0110    6
7    0111    0111    7
8    1000    1000    8
9    1001    1001    9
10   1010    1010    A
11   1011    1011    B
12   1100    1100    C
13   1101    1101    D
14   1110    1110    E
15   1111    1111    F

实现转换的代码如下:
#include<iostream>
#include<time.h>
using namespace std;
string Char2BCD(unsigned char *c,int len)
       char s[100];
       char c1,c2;
       string str="";
       for(int i=0;i<len;i++)
       	c1= c[i]&0x0f;//提取2进制数的低4位 
                    char型数据里面的数据是以16进制数存储的,每个char型数据的可能值是从0x00~0xff(表示为2进制范围是从00000000~11111111)的16进制数,即每个char型数据里面能存储8位的数据。如果存储类型为BCD码,那也就是按照2进制来存储数据。对应表如下:Int  二进制  BCD码  Hex 0    0000    0000    01    0001    00
需要注意以下几点:
①:该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。
②:当第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。
③:该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以...
				
//模板参数:S开始的位,N位的个数 //样例数据 {0x12 0x34 0x56 0x78 0x9F} if (N=4,S=3) then 提取出的数字为4567 #include #include #include template class bcd_to_int public: static int parse(char* src) static_assert
举例说明:假设int整数为12345678,化为BCD后成为了32位的12345678,表示4个字节。#include<stdio.h> typedef unsigned long u32; u32 inttoBCD(int m) u32 r=0,n=1; int a; while(m) a=m %10; m=m/10;
/************************************************************************************************************************* *函数         : void HextoBCD(u8 *pBuff,u8 len) *功能         : 十六进制BCD
<br />int IntToBcd(int value,char* buf,int buf_len)<br /> {<br />     char ascii[16]={0};<br />     int v;<br />     int i,j,len,ret=0;<br /><br />     if(buf==NULL||buf_len<=0){<br />         debug_error("buf is null/n");<br />         goto error;<
unsigned char bcd_to_decimal(unsigned char bcd) { return ((bcd >> 4) * 10) + (bcd & 0x0F); unsigned int bcd_to_decimal_16(unsigned char *bcd, int len) { unsigned int result = 0; for (int i = 0; i < len; i++) { result = (result * 100) + bcd_to_decimal(bcd[i]); return result; 其中,`bcd_to_decimal`函数将一个8位的BCD换为10进制数,`bcd_to_decimal_16`函数将一个16位的BCD数组换为10进制数。