C语言 | 您所在的位置:网站首页 › 6b16进制 › C语言 |
C语言的字符串操作并不像java,Csharp那样提供直接的方法,简单粗暴。所以,在转换的时候往往费力费时,近日做项目正好用到和java程序通讯,java发送过来的数据是十六进制数字组成的字符串,解析的时候颇费心思才算完成,所以,权在此做一笔记,方便以后查看,以及需要帮助的童鞋,当然,有问题欢迎随时交流,一同进步,欧耶!~ 一、将数组转换为十六进制同值的字符串 读取数组中的数字,打印成字符串的时候以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 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |