C语言:各种数据类型转换函数
#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语言:各种数据类型转换函数相关推荐
- Python类型转换——数据类型转换函数大全
Python类型转换--Python数据类型转换函数大全 虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型 ...
- Python类型转换,Python数据类型转换函数大全
Python类型转换,Python数据类型转换函数大全 虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转 ...
- python数字类型转换函数_Python的数据类型转换函数
玩蛇网这篇文章给大家介绍关于,Python数据类型的转换函数. Python提供了一些可以把某个值从一种数据类型,转换成为另一种数据类型的内置函数和方法.int函数可以将任何可以转换为整型的值转换为整 ...
- Sql Server函数全解三数据类型转换函数和文本图像函数
原文:Sql Server函数全解<三>数据类型转换函数和文本图像函数 一:数据类型转换函数 在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近 ...
- FPGA之道(25)VHDL数据类型转换函数与数据对象的属性
文章目录 数据类型转换函数 数据对象的属性 数值类属性 Signal属性 数据类型转换函数 在VHDL的众多数据类型中,归根到底,它们都是要用二进制数来表示的,所以它们之间几乎都是可以相互转换的.在有 ...
- python类型转换-Python的数据类型转换函数
玩蛇网这篇文章给大家介绍关于,Python数据类型的转换函数. Python提供了一些可以把某个值从一种数据类型,转换成为另一种数据类型的内置函数和方法.int函数可以将任何可以转换为整型的值转换为整 ...
- 【Arduino】开发入门教程【六】数据类型转换函数
Arduino数据类型转换函数有 char() : 将任意类型的值转换成char类型; byte(): 将任意类型的值转换成byte类型; int(): 将任意类型的值转换成int类型; long ...
- java数据类型的转换函数_JAVA中常用数据类型转换函数
JAVA中常用数据类型转换函数: string->byte Byte static byte parseByte(String s) byte->string Byte static St ...
- SAP HANA SQL系列二:数据类型转换函数
数据类型转换函数 CAST TO_ALPHANUM TO_BIGINT TO_BINARY TO_BLOB TO_CHAR TO_CLOB TO_DATE TO_DECIMAL TO_DOUBLE T ...
- access中数据类型转换函数
类型转换函数 每个函数都可以强制将一个表达式转换成某种特定数据类型. 语法 CBool(expression) CByte(expression) CCur(expression) CDate(exp ...
最新文章
- 轻松一刻:程序员的工作状态
- 自定义dropout
- 编解码:Base64编码在URL中的应用
- python url加密解密_小叮当Python进阶(二):爬虫与加密算法Part2之URL与Base64
- Framelayout
- Linux安装包deb和rpm格式,deb格式和rpm格式是什么?_网站服务器运行维护
- Linux下MongoDB的安装,通过配置文件启动Mongodb的方式研究,mongodb自启动脚本(Linux),Windows下安装MongoDB服务,集群部署,数据导出和恢复
- Collections.min()和Collections.max()的使用
- java ssh客户端_简单的Java SSH客户端
- abaqus分析用户手册单元卷_ABAQUS与你我的约定
- 机器/深度学习常见面试问题
- 《C++程序设计实践》实验1
- 【转】用万兆网卡测试超五类网线传输速度,颠覆你的认知
- 西电2021计算机考研大纲,2021年西安电子科技大学硕士研究生833计算机学科专业基础综合考试大纲...
- 【大四上学期】过程控制系统课程笔记
- Android之友盟多渠道打包与数据统计(非原创)
- Small Talk Matters【闲谈很重要】
- 解决最新的Chrome 7 不再支持CRX手动安装方法
- SAP在华真相:天价收费与用户之灾
- 求最长不下降序列:逆推法
热门文章
- 通过透明网关访问MSQL
- 漫步者 lollipods 充电
- 腾讯云服务器性能评测:配置参数16核 32G 28M
- java短链接_Java 网址短链接服务原理及解决方案
- 打开Skype的时候提醒:TOM-Skype 已经停止工作,这是什么意思? 重装了一遍还是不能用。...
- Fedora 33 安装wine-6.0 微信3.0
- jBPM4的运行期环境
- 双十一回血,2222红包送给大家!
- 技术领导力:作为技术团队领导经常为人所忽略的技能和职责
- ubuntu加了张固态_UbuntuToGo——打造属于自己的移动固态热插拔Liniux操作系统