#include <string.h>

#include <stdio.h>

#include <stdlib.h>

/*

* tool_utils.c

*

* Created on: 2016-2-2

* Author: user

*/

/*******************************************************************************

* 函数名 : strnicmp

* 描述 : 字符比较

* 输入 :

* 输出 :

* 返回 :

* 注意 :

*******************************************************************************/

int strnicmp(const char *dst, const char *src, int count)

{

char ch1, ch2;

if(count != strlen(src))

return -1;

do

{

if ( ((ch1 = (unsigned char)(*(dst++))) >= 'A') &&(ch1 <= 'Z') )

ch1 += 0x20;

if ( ((ch2 = (unsigned char)(*(src++))) >= 'A') &&(ch2 <= 'Z') )

ch2 += 0x20;

} while ( --count && ch1 && (ch1 == ch2) );

return (ch1 - ch2);

}

/*******************************************************************************

* 函数名 : itoi

* 描述 : 数字转化为字符串

* 输入 :

* 输出 :

* 返回 :

* 注意 :

*******************************************************************************/

void itoi(char *str, unsigned long num)

{

char index[]="0123456789";

char i = 0, j = 0;

char temp;

do

{

str[i++] = index[num%10];

num /= 10;

}while(num);

str[i]='\0';

for(j=0; j<=(i-1)/2; j++)

{

temp=str[j];

str[j]=str[i-j-1];

str[i-j-1]=temp;

}

}

/*******************************************************************************

* 函数名 : itoc

* 描述 : 单个数字转化为字符

* 输入 : ichar数字

* 输出 :

* 返回 : 字符

* 注意 :

*******************************************************************************/

char itoc(unsigned char ichar)

{

char index[]="0123456789";

return index[ichar%10];

}

/*******************************************************************************

* 函数名 : Hex2Str

* 描述 : 16进制数转化成字符串,用于AT+NSOST命令

* 输入 : 输入: pSrc - 源数据指针

* 输出 : 输出: pDst - 目标字符串指针

* 返回 :

* 注意 : 如:{0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01} --> "C8329BFD0E01"

*******************************************************************************/

void Hex2Str(char* pSrc, char* pDst, unsigned int nSrcLength)

{

int i = 0;

const char tab[]="0123456789ABCDEF"; // 0x0-0xf的字符查找表

for (i = 0; i < nSrcLength; i++)

{

*pDst++ = tab[*pSrc >> 4]; // 输出高4位

*pDst++ = tab[*pSrc & 0x0f]; // 输出低4位

pSrc++;

}

// 输出字符串加个结束符

*pDst = '\0';

}

/*******************************************************************************

* 函数名 : AsciiToHex

* 描述 : ASCALL码转换成字符

* 输入 : unsigned char cNum ASC-II字符码

* 输出 : unsigned char HEX码

* 返回 :

* 注意 : 如:{'A'} --> 0xA

*******************************************************************************/

unsigned char AsciiToHex(unsigned char cNum)

{

if(cNum>='0'&&cNum<='9')

{

cNum -= '0';

}

else if(cNum>='A'&&cNum<='F')

{

cNum -= 'A';

cNum += 10;

}

else if(cNum>='a'&&cNum<='f')

{

cNum -= 'a';

cNum += 10;

}

return cNum;

}

/*******************************************************************************

* 函数名 : StrToHex

* 描述 : 字符串转换hex

* 输入 : char *ptr字符存储区,unsigned short len数据长度

* 输出 :

* 返回 :

* 注意 : 如:"C8329BFD0E01" --> {0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01}

*******************************************************************************/

void StrToHex(char *ptr, unsigned short len)

{

unsigned char n1 = 0;

unsigned char n2 = 0;

unsigned char num = 0;

unsigned short i = 0;

unsigned short index = 0;

for(i=0; i<len; i++)

{

index = i << 1; //index=i*2

n1 = AsciiToHex(ptr[index]);

n2 = AsciiToHex(ptr[index+1]);

num = (n1<<4) + n2;

str[i] = num;

}

}

/***************************************************

* author:szy

* data:2018-7-26

* 功能:两位数十进制转 BCD 码

* 输入: int Dec 待转换的十进制数据

* 返回: unsigned char Bcd 转换后的 BCD 码

*****************************************************/

unsigned char DectoBCD(int Dec)

{

int i;

int temp;

unsigned char Bcd;

temp = Dec%100;

Bcd = ((temp/10)<<4) + ((temp%10) & 0x0F);

return Bcd;

}

*******************************************************************

//BCD码转十进制函数,输入BCD,返回十进制

#include <stdio.h>

#include <stdlib.h>

#define uchar unsigned char

uchar BCD_Decimal(uchar bcd) ;

int main(void)

{

uchar ch = 0x20 ;

uchar ah = 0x10;

int a;

uchar dec = BCD_Decimal(ch);

uchar aec = BCD_Decimal(ah);

printf("dec = %d\n",dec); //20

printf("aec = %d\n",aec);//10

a = dec-aec;

printf("a=%d\n",a);//10

return 0 ;

}

uchar BCD_Decimal(uchar bcd)

{

uchar Decimal;

Decimal=bcd>>4;

return(Decimal=Decimal*10+(bcd&=0x0F));

}

//int——>hex

char int2hex(int num)

{

char str = 0X00;

int i;

for(i=0;i<num;i++)

{

str++;

}

//printf("str = %x\n",str);

return str;

}

unsigned short int2hex_short(int num)

{

unsigned short str = 0x0000;

int i;

for(i=0;i<num;i++)

{

str++;

}

printf("str = %x\n",str);

return str;

}

/*******************************************************************************

* author:szy

* data:2018-7-25

* 函数名 : AsciiToHex

* 描述 : ASCALL码转换成字符

* 输入 : unsigned char cNum ASC-II字符码

* 输出 : unsigned char HEX码

* 返回 :

* 注意 : 如:{'A'} --> 0xA

*******************************************************************************/

unsigned char AsciiToHex(unsigned char cNum)

{

if(cNum>='0'&&cNum<='9')

{

cNum -= '0';

}

else if(cNum>='A'&&cNum<='F')

{

cNum -= 'A';

cNum += 10;

}

else if(cNum>='a'&&cNum<='f')

{

cNum -= 'a';

cNum += 10;

}

return cNum;

}

/*******************************************************************************

* author:szy

* data:2018-7-25

* 函数名 : Str_To_Hex

* 描述 : 字符串转换hex

* 输入 : char *ptr待转换字符串,unsigned short len数据长度 char *str转换后存储区

* 输出 :

* 返回 :

* 注意 : 如:"C8329BFD0E01" --> {0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01}

*******************************************************************************/

void Str_To_Hex(char *ptr, unsigned short len, char *str)

{

unsigned char n1 = 0;

unsigned char n2 = 0;

unsigned char num = 0;

unsigned short i = 0;

unsigned short index = 0;

for(i=0; i<len; i++)

{

index = i << 1; //index=i*2

n1 = AsciiToHex(ptr[index]);

n2 = AsciiToHex(ptr[index+1]);

num = (n1<<4) + n2;

str[i] = num;

}

}

/*******************************************************************************

* author:szy

* data:2018-12-20

* 函数名 : Hex2Str

* 描述 : 16进制数转化成字符串,用于AT+NSOST命令

* 输入 : 输入: pSrc - 源数据指针

* 输出 : 输出: pDst - 目标字符串指针

* 长度 :长度:nSrcLength - 带转换的十六进制字节数

* 返回 :

* 注意 : 如:{0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01} --> "C8329BFD0E01"

*******************************************************************************/

void Hex2Str(char* pSrc, char* pDst, unsigned int nSrcLength)

{

int i = 0;

const char tab[]="0123456789ABCDEF"; // 0x0-0xf的字符查找表

for (i = 0; i < nSrcLength; i++)

{

*pDst++ = tab[*pSrc >> 4]; // 输出高4位

*pDst++ = tab[*pSrc & 0x0f]; // 输出低4位

pSrc++;

}

// 输出字符串加个结束符

*pDst = '\0';

}

/***************************************************

* author:szy

* data:2018-7-26

* 功能:两位数十进制转 BCD 码

* 输入: int Dec 待转换的十进制数据

* 返回: unsigned char Bcd 转换后的 BCD 码

*****************************************************/

unsigned char DectoBCD(int Dec)

{

int i;

int temp;

unsigned char Bcd;

temp = Dec%100;

Bcd = ((temp/10)<<4) + ((temp%10) & 0x0F);

return Bcd;

}

//BCD转10进制

//可以用int接收返回值

unsigned char BCDtoDec(unsigned char bcd)

{

unsigned char Decimal;

Decimal=bcd>>4;

return(Decimal=Decimal*10+(bcd&=0x0F));

}

C语言:各种数据类型转换函数相关推荐

  1. Python类型转换——数据类型转换函数大全

    Python类型转换--Python数据类型转换函数大全 虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型 ...

  2. Python类型转换,Python数据类型转换函数大全

    Python类型转换,Python数据类型转换函数大全 虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转 ...

  3. python数字类型转换函数_Python的数据类型转换函数

    玩蛇网这篇文章给大家介绍关于,Python数据类型的转换函数. Python提供了一些可以把某个值从一种数据类型,转换成为另一种数据类型的内置函数和方法.int函数可以将任何可以转换为整型的值转换为整 ...

  4. Sql Server函数全解三数据类型转换函数和文本图像函数

    原文:Sql Server函数全解<三>数据类型转换函数和文本图像函数 一:数据类型转换函数 在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近 ...

  5. FPGA之道(25)VHDL数据类型转换函数与数据对象的属性

    文章目录 数据类型转换函数 数据对象的属性 数值类属性 Signal属性 数据类型转换函数 在VHDL的众多数据类型中,归根到底,它们都是要用二进制数来表示的,所以它们之间几乎都是可以相互转换的.在有 ...

  6. python类型转换-Python的数据类型转换函数

    玩蛇网这篇文章给大家介绍关于,Python数据类型的转换函数. Python提供了一些可以把某个值从一种数据类型,转换成为另一种数据类型的内置函数和方法.int函数可以将任何可以转换为整型的值转换为整 ...

  7. 【Arduino】开发入门教程【六】数据类型转换函数

    Arduino数据类型转换函数有 char() : 将任意类型的值转换成char类型; byte():  将任意类型的值转换成byte类型; int():  将任意类型的值转换成int类型; long ...

  8. java数据类型的转换函数_JAVA中常用数据类型转换函数

    JAVA中常用数据类型转换函数: string->byte Byte static byte parseByte(String s) byte->string Byte static St ...

  9. SAP HANA SQL系列二:数据类型转换函数

    数据类型转换函数 CAST TO_ALPHANUM TO_BIGINT TO_BINARY TO_BLOB TO_CHAR TO_CLOB TO_DATE TO_DECIMAL TO_DOUBLE T ...

  10. access中数据类型转换函数

    类型转换函数 每个函数都可以强制将一个表达式转换成某种特定数据类型. 语法 CBool(expression) CByte(expression) CCur(expression) CDate(exp ...

最新文章

  1. 轻松一刻:程序员的工作状态
  2. 自定义dropout
  3. 编解码:Base64编码在URL中的应用
  4. python url加密解密_小叮当Python进阶(二):爬虫与加密算法Part2之URL与Base64
  5. Framelayout
  6. Linux安装包deb和rpm格式,deb格式和rpm格式是什么?_网站服务器运行维护
  7. Linux下MongoDB的安装,通过配置文件启动Mongodb的方式研究,mongodb自启动脚本(Linux),Windows下安装MongoDB服务,集群部署,数据导出和恢复
  8. Collections.min()和Collections.max()的使用
  9. java ssh客户端_简单的Java SSH客户端
  10. abaqus分析用户手册单元卷_ABAQUS与你我的约定
  11. 机器/深度学习常见面试问题
  12. 《C++程序设计实践》实验1
  13. 【转】用万兆网卡测试超五类网线传输速度,颠覆你的认知
  14. 西电2021计算机考研大纲,2021年西安电子科技大学硕士研究生833计算机学科专业基础综合考试大纲...
  15. 【大四上学期】过程控制系统课程笔记
  16. Android之友盟多渠道打包与数据统计(非原创)
  17. Small Talk Matters【闲谈很重要】
  18. 解决最新的Chrome 7 不再支持CRX手动安装方法
  19. SAP在华真相:天价收费与用户之灾
  20. 求最长不下降序列:逆推法

热门文章

  1. 通过透明网关访问MSQL
  2. 漫步者 lollipods 充电
  3. 腾讯云服务器性能评测:配置参数16核 32G 28M
  4. java短链接_Java 网址短链接服务原理及解决方案
  5. 打开Skype的时候提醒:TOM-Skype 已经停止工作,这是什么意思? 重装了一遍还是不能用。...
  6. Fedora 33 安装wine-6.0 微信3.0
  7. jBPM4的运行期环境
  8. 双十一回血,2222红包送给大家!
  9. 技术领导力:作为技术团队领导经常为人所忽略的技能和职责
  10. ubuntu加了张固态_UbuntuToGo——打造属于自己的移动固态热插拔Liniux操作系统