C语言版的16进制与字符串互转函数

转载 2015年07月09日 16:43:23
http://www.cnblogs.com/nio-nio/p/3309367.html

/*
// C prototype : void StrToHex(BYTE *pbDest, BYTE *pbSrc, int nLen)
// parameter(s): [OUT] pbDest - 输出缓冲区
// [IN] pbSrc - 字符串
// [IN] nLen - 16进制数的字节数(字符串的长度/2)
// return value: 
// remarks : 将字符串转化为16进制数
*/
void StrToHex(BYTE *pbDest, BYTE *pbSrc, int nLen)
{
char h1,h2;
BYTE s1,s2;
int i;

for (i=0; i<nLen; i++)
{
h1 = pbSrc[2*i];
h2 = pbSrc[2*i+1];

s1 = toupper(h1) - 0x30;
if (s1 > 9) 
s1 -= 7;

s2 = toupper(h2) - 0x30;
if (s2 > 9) 
s2 -= 7;

pbDest[i] = s1*16 + s2;
}
}

/*
// C prototype : void HexToStr(BYTE *pbDest, BYTE *pbSrc, int nLen)
// parameter(s): [OUT] pbDest - 存放目标字符串
// [IN] pbSrc - 输入16进制数的起始地址
// [IN] nLen - 16进制数的字节数
// return value: 
// remarks : 将16进制数转化为字符串
*/
void HexToStr(BYTE *pbDest, BYTE *pbSrc, int nLen)
{
char ddl,ddh;
int i;

for (i=0; i<nLen; i++)
{
ddh = 48 + pbSrc[i] / 16;
ddl = 48 + pbSrc[i] % 16;
if (ddh > 57) ddh = ddh + 7;
if (ddl > 57) ddl = ddl + 7;
pbDest[i*2] = ddh;
pbDest[i*2+1] = ddl;
}

pbDest[nLen*2] = '\0';
}


相关文章推荐

HEXToStr StrToHEX

function TransChar(AChar: Char): Integer; begin   if AChar in ['0'..'9'] then   Result := Ord(ACh...

C语言实现字节流与十六进制字符串的相互转换

原文出自:http://blog.csdn.net/qq387732471/article/details/7360988 //字节流转换为十六进制字符串 void ByteToHexStr...
  • pingD
  • pingD
  • 2014年12月15日 16:58
  • 24100

C语言中字符串如何转换为二进制、八进制、十进制、十六进制

在C语言某个程序当中需要把文本16进制转换成对应的16进制数,比如字符串"0x1a"转换成10进制的26,可以用以下函数来实现 相关函数: atof, atoi, atol, strtod, str...
  • edonlii
  • edonlii
  • 2013年06月24日 15:34
  • 40442

C语言将16进制的数转换为字符串的方法

将16进制的数据改为字符串,也就是0xAB,改成“AB”。。。虽然看上去没什么用。...

C语言实现字节流与十六进制字符串的相互转换

[cpp] view plain //字节流转换为十六进制字符串   void ByteToHexStr(const unsigned char* source, char* dest, in...

C语言十六进制数据同字符串的相互转换

// t4.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #inclu...

C语言版的16进制与字符串互转函数

C语言版的16进制与字符串互转函数 /* // C prototype : void StrToHex(BYTE *pbDest, BYTE *pbSrc, int nLen)...

C语言实现字节流与十六进制字符串的相互转换

原文出自:http://blog.csdn.net/qq387732471/article/details/7360988 [cpp] view plain copy...

C通用函数:ASCII与十六制字符串互相转换

在用QT做一个串口通讯软件。在接收数据时,一般的串口收发软件的数据窗口都有ASCII显示模式,也可以转换成HEX十六进制模式。这样有利调试。 因此写了两个函数进行转换,其中ASCII转16进制算法...

[C/C++]_[输出内存数据的二进制和十六进制的字符串表示]

场景: 1. 在读取文件或内存时,有时候输出那段内存的十六或二进制表示进行分析。 2. 标准的printf没有显示二进制的,而%x显示有最大上限,就是8字节,超过8字节就不行了。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言版的16进制与字符串互转函数
举报原因:
原因补充:

(最多只允许输入30个字)