十六进制字符串转byte数组实现
来源:互联网 发布:yum nginx 安装 编辑:程序博客网 时间:2024/05/15 16:48
十六进制字符串转byte数组,就是实现如下功能:把一个字符串,比如“E4F1C3A81F”转换成bit存到一个数组char *的数组char * buf里,buf[0] = 0xE4,buf[1] = 0xF1,buf[2] = 0xC3,buf[3] = 0xA8......。
完整代码实现:
// stringTobit.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <stdlib.h>#include <stdio.h>int Change(char s[],char bits[]) {int i,n = 0;for(i = 0; s[i]; i += 2) {if(s[i] >= 'A' && s[i] <= 'F')bits[n] = s[i] - 'A' + 10;else bits[n] = s[i] - '0';if(s[i + 1] >= 'A' && s[i + 1] <= 'F')bits[n] = (bits[n] << 4) | (s[i + 1] - 'A' + 10);else bits[n] = (bits[n] << 4) | (s[i + 1] - '0');++n;}return n;}int _tmain(int argc, _TCHAR* argv[]){/*十六进制串转Byte数组,最后转为十进制值*/char szValue1[10] = {0},szValue[10] = {0},bits[10] = {0},s[] = "040400000002719E";int i,nValue(0),n = Change(s,bits);printf ("十六进制字符串:%s\n",s);printf ("转化后:\n ");printf ("十六进制byte数组: ");for(i = 0;i < n;i++){ sprintf_s(szValue1,"0x%02x",(0XFF & bits[i]));printf("%s ",szValue1);}printf ("\n十进制byte数组: ");for(i = 0;i < n;i++){ sprintf_s(szValue," %d",(0XFF & bits[i]));nValue = atoi(szValue);printf("%d ",nValue);}printf ("\n");/*十进制值转十六进制串*/char szVal[30];sprintf_s(szVal,"%02x%02x%02x%02x%02x%02x%02x%02x",4,4,0,0,0,2,113,158);printf("重新组合: %s\n",szVal);return 0;}
阅读全文