C语言数字字符串转换为十六进制格式函数
2014-07-03 14:36
225 查看
今天在测试生产系统的时候,需要输入测试数据,网上没有找到可用的代码,自己写了一个,有需要的可以使用一下。
在网络通信中,服务端收到的内容都是以16进制存在的8位串,在模拟一个客户端发包的时候,需要将模拟数据转换成16进制。
例如一段数据
char test[]="0000008504050603020101010009011102161400"
要把他转换成
00 00 00 85 04 05 06 03
02 01 01 01 00 09 01 11
02 16 14 00
16进制串。
void CharToHex(char * dest, char * buffer , int len)
{
int i=0;
int j=0;
unsigned char temp;
while(i<len)
{
temp=buffer[i];
if((temp>=0x30)&&(temp<=0x39))
{
temp=temp-0x30;
dest[j]=temp<<4;
}
else if((temp>=0x41)&&(temp<=0x46))
{
temp=temp-0x41+0x0A;
dest[j]=temp<<4;
}
else if((temp>=0x61)&&(temp<=0x66))
{
temp=temp-0x61+0x0A;
dest[j]=temp<<4;
}
else
{
dest[j]=0x00;
}
// dest[j]=dest[j]<<4;
temp=buffer[i+1];
if((temp>=0x30)&&(temp<=0x39))
{
temp=temp-0x30;
dest[j]=dest[j]|temp;
}
else if((temp>=0x41)&&(temp<=0x46))
{
temp=temp-0x41+0x0A;
dest[j]=dest[j]|temp;
}
else if((temp>=0x61)&&(temp<=0x66))
{
temp=temp-0x61+0x0A;
dest[j]=dest[j]|temp;
}
else
{
dest[j]=dest[j]|0x00;
}
i=i+2;
j=j+1;
}
return;
}
附一个十六进制到字符串转换的方法。
void HextoString(unsigned char *digest,char* buff,int len) {
unsigned int i;
char *ptr = buff;
for (i = 0; i < len; i++) {
sprintf (ptr,"x", digest[i]);
ptr+=2;
}
}
在网络通信中,服务端收到的内容都是以16进制存在的8位串,在模拟一个客户端发包的时候,需要将模拟数据转换成16进制。
例如一段数据
char test[]="0000008504050603020101010009011102161400"
要把他转换成
00 00 00 85 04 05 06 03
02 01 01 01 00 09 01 11
02 16 14 00
16进制串。
void CharToHex(char * dest, char * buffer , int len)
{
int i=0;
int j=0;
unsigned char temp;
while(i<len)
{
temp=buffer[i];
if((temp>=0x30)&&(temp<=0x39))
{
temp=temp-0x30;
dest[j]=temp<<4;
}
else if((temp>=0x41)&&(temp<=0x46))
{
temp=temp-0x41+0x0A;
dest[j]=temp<<4;
}
else if((temp>=0x61)&&(temp<=0x66))
{
temp=temp-0x61+0x0A;
dest[j]=temp<<4;
}
else
{
dest[j]=0x00;
}
// dest[j]=dest[j]<<4;
temp=buffer[i+1];
if((temp>=0x30)&&(temp<=0x39))
{
temp=temp-0x30;
dest[j]=dest[j]|temp;
}
else if((temp>=0x41)&&(temp<=0x46))
{
temp=temp-0x41+0x0A;
dest[j]=dest[j]|temp;
}
else if((temp>=0x61)&&(temp<=0x66))
{
temp=temp-0x61+0x0A;
dest[j]=dest[j]|temp;
}
else
{
dest[j]=dest[j]|0x00;
}
i=i+2;
j=j+1;
}
return;
}
附一个十六进制到字符串转换的方法。
void HextoString(unsigned char *digest,char* buff,int len) {
unsigned int i;
char *ptr = buff;
for (i = 0; i < len; i++) {
sprintf (ptr,"x", digest[i]);
ptr+=2;
}
}
相关文章推荐
- 【C语言】为下面的函数原型编写函数定义: int ascii_to_integer(char *str); 这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。
- C语言 字符串数字函数转换大全
- C语言 编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)
- 【C语言】编写函数实现库函数atoi,把字符串转换成整形(考虑数字过大)
- C语言将字符串转换成对应的数字(十进制、十六进制)
- C语言将字符串转换成对应的数字(十进制、十六进制)
- 练习2-3 编写函数 htoi(s),把由十六进制数字组成的字符串(包含可选的前缀0x 或0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~9、a~f以及A~F。
- C语言将字符串转换成对应的数字(十进制、十六进制)【转】
- 用C语言(apue)实现 把时间戳转换为国标格式的字符串(2017-07-17 22:36:12)的函数
- 练习 2-3 编写函数 htoi(s),把由十六进制数字组成的字符串(包含可选的前缀 0x 或 0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~9、a~f 以及 A~F。
- 【C语言】编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数)
- C语言数字与字符串转换 atoi()函数、itoa()函数、sprintf()函数
- C语言数字与字符串转换 atoi()函数、itoa()函数、sprintf()函数
- 【c语言】为下面的函数原型编写函数定义,这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。
- C语言将字符串转换成对应的数字(十进制、十六进制)
- 【c语言】编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)
- 【C语言】编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)
- 【c语言】编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数)
- C语言将字符串转换成对应的数字(十进制、十六进制)
- 一个把十六进制字符串转换为十进制数字的函数