"); //-->
读取数组中的数字,打印成字符串的时候以2位大写的格式。
int arrayToStr(unsigned char *buf, unsigned int buflen, char *out)
{
char strBuf[33] = {0};
char pbuf[32];
int i;
for(i = 0; i < buflen; i++)
{
sprintf(pbuf, "%02X", buf[i]);
strncat(strBuf, pbuf, 2);
}
strncpy(out, strBuf, buflen * 2);
printf("out = %s\n", out);
return buflen * 2;
}二、将十六进制的字符串转换为十六进制数组
下面定义的字符串中的字符只能是0-F的字符,但是不区分大小写的,前面是安装两位为一个数字进行转换,最后一个数字如果还是两位的则正常转换,如果只剩一位的话则在前面补零输出。
int StringToHex(char *str, unsigned char *out, unsigned int *outlen)
{
char *p = str;
char high = 0, low = 0;
int tmplen = strlen(p), cnt = 0;
tmplen = strlen(p);
while(cnt < (tmplen / 2))
{
high = ((*p > '9') && ((*p <= 'F') || (*p <= 'f'))) ? *p - 48 - 7 : *p - 48;
low = (*(++ p) > '9' && ((*p <= 'F') || (*p <= 'f'))) ? *(p) - 48 - 7 : *(p) - 48;
out[cnt] = ((high & 0x0f) << 4 | (low & 0x0f));
p ++;
cnt ++;
}
if(tmplen % 2 != 0) out[cnt] = ((*p > '9') && ((*p <= 'F') || (*p <= 'f'))) ? *p - 48 - 7 : *p - 48;
if(outlen != NULL) *outlen = tmplen / 2 + tmplen % 2;
return tmplen / 2 + tmplen % 2;
}三、将十进制字符串转化为十进制数组
int StringToCom(char *str, unsigned char *out, int *outlen)
{
char *p = str;
char high = 0, low = 0;
int tmplen = strlen(p), cnt = 0;
tmplen = strlen(p);
if(tmplen % 2 != 0) return -1;
while(cnt < tmplen / 2) //1213141516171819
{
out[cnt] = (*p - 0x30) * 10 + (*(++p) - 0x30);
p++;
cnt ++;
}
*outlen = tmplen / 2;
return tmplen / 2;
}四、简单的使用方法
定义的参数有些为unsigned char,是因为在定义为char的时候,转换为十六进制之后,负数在表示的时候,难看!
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
unsigned char ArrayCom[16] = {
11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26};
unsigned char ArrayHex[16] = {
0x2c, 0x57, 0x8f, 0x79, 0x27, 0xa9, 0x49, 0xd3,
0xb5, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
char *strHex = "01aa0304050607083f0add0c0d0e0f00";
char *strCom = "1D1213AB6FC1718B19202122232425A6";
int main(int argc, const char *argv)
{
int cnt;
char str[33] = {0};
unsigned char out[33];
arrayToStr(ArrayCom, 16, str);
int outlen = 0;
StringToHex(strCom, out, &outlen);
for(cnt = 0; cnt < outlen; cnt ++)
{
printf("%02X ", out[cnt]);
}
putchar(10);
return 0;
}https://blog.csdn.net/zhemingbuhao/article/details/83111564
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
LabVIEW网络讲坛第三季——第十期:事件结构的妙用
LabVIEW讲坛第三季——第十一期:多核时代下的并行编程(上)
用LM567制作红外线遥控开关
经典的耳机放大器的电路图
双向200-A霍尔电流传感器首次实现1400伏隔离
模型飞机起落架控制器,附着陆灯,防撞灯.zip
采用实时时钟芯片DS1302+AT89C2051的红外遥控LED电子钟
PIC16f877快速上手
\"晶体振荡器\"的核心技术
通过端到端1.6T互连测试提升AI网络可靠性
CES 2026预览:电子墨水智能手机、过敏原检测器及更多内容
具右大轴小电流的放大电路图
论坛好慢:(
高精度数控直流稳压电源(DAC0832+89S51).rar
韩国信息产业腾飞的经验
ARM中国总裁将来此回答关于ARM设计应用竞赛问题
LabVIEW讲坛第三季——第十二期:多核时代下的并行编程(下)
《VxWorks开发人员指南丛书》又出新作
声光控开关
技术赋能,创新制胜:TI 与江南大学队共赴电赛“满分之旅”
T2.2调试时single step非常迟钝???
PGA202信号和电源的基本连接电路图
精密电阻分压器延长高压电池寿命
全国大学生“飞思卡尔杯”智能汽车竞赛宣传片
牵头获奖!西电3项成果上榜
多功能模型用控制器
LabVIEW网络讲坛第三季——第九期:子面板技术探究
带警报和报警的电源监控器几乎不需要自供电
重磅!“天目山一号”,创世界纪录!
在单一硬件平台上执行多个工作负载