From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Monjalon Subject: Re: [PATCH v2 6/8] example/ip_pipeline: add parse_hex_string for internal use Date: Mon, 19 Oct 2015 15:49:32 +0200 Message-ID: <2304122.ekIElQmNCJ@xps13> References: <1444744652-573-1-git-send-email-jasvinder.singh@intel.com> <1444744652-573-7-git-send-email-jasvinder.singh@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7Bit Cc: dev@dpdk.org To: Jasvinder Singh Return-path: Received: from mail-wi0-f171.google.com (mail-wi0-f171.google.com [209.85.212.171]) by dpdk.org (Postfix) with ESMTP id DD2438E70 for ; Mon, 19 Oct 2015 15:50:38 +0200 (CEST) Received: by wijp11 with SMTP id p11so7137858wij.0 for ; Mon, 19 Oct 2015 06:50:38 -0700 (PDT) In-Reply-To: <1444744652-573-7-git-send-email-jasvinder.singh@intel.com> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 2015-10-13 14:57, Jasvinder Singh: > From: Fan Zhang > +static uint32_t > +get_hex_val(char c) > +{ > + switch (c) { > + case '0': > + case '1': > + case '2': > + case '3': > + case '4': > + case '5': > + case '6': > + case '7': > + case '8': > + case '9': > + return c - '0'; > + case 'A': > + case 'B': > + case 'C': > + case 'D': > + case 'E': > + case 'F': > + return c - 'A' + 10; > + case 'a': > + case 'b': > + case 'c': > + case 'd': > + case 'e': > + case 'f': > + return c - 'a' + 10; > + default: > + return 0; > + } > +} > + > +int > +parse_hex_string(char *src, uint8_t *dst, uint32_t *size) > +{ > + char *c; > + uint32_t len, i; > + > + /* Check input parameters */ > + if ((src == NULL) || > + (dst == NULL) || > + (size == NULL) || > + (*size == 0)) > + return -1; > + > + len = strlen(src); > + if (((len & 3) != 0) || > + (len > (*size) * 2)) > + return -1; > + *size = len / 2; > + > + for (c = src; *c != 0; c++) { > + if ((((*c) >= '0') && ((*c) <= '9')) || > + (((*c) >= 'A') && ((*c) <= 'F')) || > + (((*c) >= 'a') && ((*c) <= 'f'))) > + continue; > + > + return -1; > + } > + > + /* Convert chars to bytes */ > + for (i = 0; i < *size; i++) > + dst[i] = get_hex_val(src[2 * i]) * 16 + > + get_hex_val(src[2 * i + 1]); > + > + return 0; > +} Why not use strtol()?