⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hex.c

📁 gpsd, a popular GPS daemon.
💻 C
字号:
/* $Id: hex.c 4384 2007-06-04 05:06:34Z ckuethe $ */#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <math.h>#include <string.h>#include "gpsd_config.h"#include "gpsd.h"char /*@ observer @*/ *gpsd_hexdump(const void *binbuf, size_t binbuflen){    static char hexbuf[MAX_PACKET_LENGTH*2+1];#ifndef SQUELCH_ENABLE    size_t i, j = 0;    size_t len = (size_t)((binbuflen > MAX_PACKET_LENGTH) ? MAX_PACKET_LENGTH : binbuflen);    const char *ibuf = (const char *)binbuf;    const char *hexchar = "0123456789abcdef";    if (NULL == binbuf || 0 == binbuflen) 	return "";    /*@ -shiftimplementation @*/    for (i = 0; i < len; i++) {	hexbuf[j++] = hexchar[ (ibuf[i]&0xf0)>>4 ];	hexbuf[j++] = hexchar[ ibuf[i]&0x0f ];    }    /*@ +shiftimplementation @*/    hexbuf[j] ='\0';#else /* SQUELCH defined */    hexbuf[0] = '\0';#endif /* SQUELCH_ENABLE */    return hexbuf;}int gpsd_hexpack(char *src, char *dst, int len){    int i, k, l;    l = (int)(strlen(src) / 2);    if ((l < 1) || (l > len))	return -1;    bzero(dst, len);    for (i = 0; i < l; i++)	if ((k = hex2bin(src+i*2)) != -1)	    dst[i] = (char)(k & 0xff);	else	    return -1;    return l;}/*@ +charint -shiftimplementation @*/int hex2bin(char *s){    int a, b;    a = s[0] & 0xff;    b = s[1] & 0xff;    if ((a >= 'a') && (a <= 'f'))	a = a + 10 - 'a';    else if ((a >= 'A') && (a <= 'F'))	a = a + 10 - 'A';    else if ((a >= '0') && (a <= '9'))	a -= '0';    else	return -1;    if ((b >= 'a') && (b <= 'f'))	b = b + 10 - 'a';    else if ((b >= 'A') && (b <= 'F'))	b = b + 10 - 'A';    else if ((b >= '0') && (b <= '9'))	b -= '0';    else	return -1;    return ((a<<4) + b);}/*@ -charint +shiftimplementation @*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -