C语言 16进制字符串转16进制数组 函数示例
函数内容 HexString2Byte
。
参数解释
char* in 存放字符串十六进制的buf
int len buf长度
unsigned char* out 传出存放十六进制数字的数组
int HexString2Byte(char* in, int len, unsigned char* out)
{int i = 0;int j = 0;unsigned char highByte = 0;unsigned char lowByte = 0;if (0 != len%2){/* format error */return -1;}for (i = 0; i < len; i+=2){/* 先获取高位 */if (('0' <= in[i]) && ('9' >= in[i])){highByte = in[i]-0x30;}else if (('A' <= in[i]) && ('F' >= in[i])){highByte = in[i]-55;}else if (('a' <= in[i]) && ('f' >= in[i])){highByte = in[i]-87;}else{return -1;}/* 再获取低位 */if (('0' <= in[i+1]) && ('9' >= in[i+1])){lowByte = in[i+1]-0x30;}else if (('A' <= in[i+1]) && ('F' >= in[i+1])){lowByte = in[i+1]-55;}else if (('a' <= in[i+1]) && ('f' >= in[i+1])){lowByte = in[i+1]-87;}else{return -1;}out[j++] = highByte<<4 | lowByte;}return 0;
}
示例代码
#include <stdio.h>
#include <string.h>int main()
{char str[33] = {"A01A2479672573DF84537DF4C73D3FCC"};unsigned char num[17] = {0};int i = 0;HexString2Byte(str, strlen(str), num);printf("str:%s\n", str);for (i = 0; i < sizeof(num); i++){printf("%02X", num[i]);}printf("\n");return 0;
}
运行结果
str:A01A2479672573DF84537DF4C73D3FCC
A01A2479672573DF84537DF4C73D3FCC00
C语言 16进制字符串转16进制数组 函数示例相关推荐
- 16进制字符串转10进制数值
16进制字符串转10进制数值 描述 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示. 数据范围:保证结果在 1≤n≤2^31−1 输入描述:输入一个十六进制的数值字符串. 输出描述:输出该 ...
- 将时间转换为16进制字符串或16进制小端模式byte数据
1.将String类型的时间转换 1>String类型时间转换为Date类型的时间 2>时间转换为时间戳 3>时间戳转换为16进制字符串 4>16进制字符串转换为16进制小端模 ...
- C++ 16进制字符串转16进制数组函数
@TOCC++ 16进制字符串转16进制数组函数 unsigned char buf[], int len) { if (str != NULL && buf != NULL & ...
- java-16进制字符串转16进制int、将10进制的数字转为16进制
String h="76F41000"; int re= new BigInteger(h, 16).intValue() 将10进制的数字转为16进制字符串 System.out ...
- Python根据用户输入的2进制字符串转8进制
Python根据用户输入的2进制字符串转8进制 问题: 从键盘输入一个由 1 和 0 组成的二进制字符串 s,转换为八进制数输出显示在屏幕上.例如输入'1100',输出'14' 实现1: # 请输入一 ...
- C++ 整型转16进制字符串或16进制字符串转整型
前言:整数转16进制字符串,网上大部分的资料都是要传入16进制字符串的位数,有点麻烦.本文介绍的方法自动确定返回的字符串的位数,位数为最小偶数.偶数位方便使用时转成字节数组(unsigned char ...
- 16进制字符串转成字节数组、字节数组转16进制字符串、16进制字符串转成2进制字符串、中英文 字符串转16进制、16进制转换成中英文 字符串
因为需要与硬件相互通讯 用到了这些方法 亲测可用 /*** 16进制表示的字符串 转换为字节数组** @param hexString 16进制表示的字符串* @return byte[] 字节数组* ...
- java 16进制字符串转base64_16进制字符串,byte[] ,base64三者之间的转换
packagecom.lgdz.qydevice.utils; importcn.hutool.core.codec.Base64; importcn.hutool.core.util.Charset ...
- c++ byte数组转int, int转byte数组,byte数组转16进制字符串,16进制字符串转byte数组
int转byte数组: void IntToBytes(int num, unsigned char* bytes, int size) { for (int i = 0; i < si ...
- PowerBuilder实现16进制字符串转换为10进制字符串
1.该问题困扰了我很久(主要还是基础不牢). 实现原理:将16进制字符串转换为二进制字符串再去计算. 然后利用二进制的性质(逢二进一)进行转换为10进制. 废话不多说,上代码了. 在这里插入代码片 C ...
最新文章
- [Spring MVC起步]我的第一个MVC
- 每日一皮:地铁上打瞌睡的程序员...
- node经验总结(一)
- mini-treeselect的动态赋值
- 翻译: TypeScript 1.8 Beta 发布
- webflux webclient DataBufferLimitException: Exceeded limit on max bytes to buffer
- [Nginx]用Nginx实现与应用结合的訪问控制 - 防盗链
- Python_堆栈和队列
- localStorage和sessionStorage的简单使用
- request_irq与request_threaded_irq
- svn外网虚拟服务器设置,svn虚拟服务器设置路由器设置
- 华农计算机学院院长,中国计算机学会“CCF走进高校”走进华农
- PyCharm中的问题记录:failed to sync ide settings. click to sync
- 【C语言训练】自由落体问题
- 编写计算机程序的几个步骤,第1讲程序设计的一般步骤ok.doc
- 自学 java如何入门?
- vmware 网络不可达
- Zed Shaw:一位老程序员的建议
- c++处处有杀机,不小心就要掉坑里
- 物联网周刊(第 4 期):边缘人工智能