将字符串转化为16进制数

2023-11-10

在有些情况下,想得到n个16进制数。然而你只能得到一个字符串数组,数组中的数据都是文本形式。
例如char *s = “1b5050508af890ef50”; 我想得到的是16进制数1b 50…,而数组中的字符,每一位都可以转化为一个16进制数,(1b转为为ASCII是 0x31 和0x61)。写代码让字符串中1b变成16进制的 0x1b

#include<stdio.h>
#include<string.h>
//这个函数会把字符转成,16进制的本身的值,例如 '1'->0x1 'b'-> 0xb
int sthvalue(char c)
{
        int value;
        if((c >= '0') && (c <= '9'))
                value = 48;
        else if ((c >= 'a') && (c <='f'))
                value = 87;
        else if ((c >= 'A') && (c <='F'))
                value = 55;
        else {
                printf("invalid data %c",c);
                return -1;
        }
        return value;
}
/*转化函数,把字符串和一个数组当做参数,这个函数会把str的值,每两个组合成一个16进制的数*/
int strtohex(char *str, char *data)
{
        int len =0;
        int sum =0;
        int high=0;
        int low=0;
        int value=0;
        int j=0;
        len = strlen(str);//获取字符串的字符个数
        //char data[256] = {0};
        printf("%d\n", len);
        //在for循环中,从0开始,每两个数组成一个16进制,高4位和低4位,然后放技能数组中去
        for(int i=0; i<len; i++)
        {

//              printf("high-n:0x%02x\n", str[i]);
                value = sthvalue(str[i]);
                high = (((str[i]-value)&0xF)<<4);//获取数据,成为高4位
//              printf("high:0x%02x\n", high);
//              printf("low-n:0x%02x\n", str[i+1]);
                value = sthvalue(str[i+1]);
                low = ((str[i+1]-value)&0xF);//获取数据,成为低4位
//              printf("low:0x%02x\n", low);
                sum = high | low; //组合高低四位数,成为一byte数据
//              printf("sum:0x%02x\n", sum);
                j = i / 2; //由于两个字符组成一byte数,这里的j值要注意
                data[j] = sum;//把这byte数据放到数组中
                i=i+1; //每次循环两个数据,i的值要再+1
        }
        return len;
}

int main()
{
        char *s = "1b5050508af890ef50";
        unsigned char buf1[256] = {0};
        int len = 0;
        printf("%s\n", s);
        len = strtohex(s, buf1);
        for (int n=0; n < (len/2); n++)
        {
                printf("0x%2X ", buf1[n]);
        }
}

结果

kayshi@ubuntu#:~/code$ gcc str_to_hex.c 
kayshi@ubuntu#:~/code$ ./a.out 
1b5050508af890ef50
18
0x1B 0x50 0x50 0x50 0x8A 0xF8 0x90 0xEF 0x50 kayshi@ubuntu#:~/code$ 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将字符串转化为16进制数 的相关文章

  • Windows 下Maven安装配置(本地仓库配置)

    一 下载maven maven官网 http maven apache org 下载下来也就是一个压缩文件 解压 我下载的是3 5 2版本 解压之后如下 路径为 D Program Files apache maven 3 5 2 二 配置
  • idea繁体字-中文输入法变繁体字

    今天提交代码发现 在IDEA中输入法突然变成繁体字 解决方案如下 idea中适用的快捷键和你输入法快捷键冲突 具体是crtl shift f
  • Docker学习

    目录 外部访问容器 映射所有接口地址 映射到指定地址的指定端口 映射到指定地址的任意端口 查看映射端口配置 容器互联 新建网络 连接容器 Docker Compose 配置 DNS 高级网络配置 快速配置指南 容器访问控制 容器之间访问 访
  • 解决iframe重定向让父级页面跳转

    原文 http www jb51 net article 40583 htm 有内嵌iframe的页面 当session过期时 点击连接重定向后的跳转会在iframe中跳转 在登录页面中加入下面的代码 就会在最外层页面跳转 原文 http
  • JVM 默认Xss大小

    abin lee java XX PrintFlagsFinal version grep ThreadStackSize intx CompilerThreadStackSize 0 pd product intx ThreadStack
  • 独步潮流!如何在私有数据集上塑造GPT式大型语言模型的独特风格!

    导读 Fine tune 是一种能够以成本效益的方式调整预训练 LLM 的技巧 本文主要比较了用于最新的开源 LLM Falcon 的不同参数高效微调方法 并为大家介绍如何使用单个 GPU 并在一天内对开源的大语言模型 Falcon 进行微
  • 【色度学】光度学基础

    1 光的本质 1 波长不同的可见光 引起人眼的颜色感觉不同 2 人们观察到的颜色是物体和特有色光相结合的结果 而不是物体产生颜色的结果 2 光度量 ISP 光的能量与颜色 1 mjiansun的博客 CSDN博客 ISP 光的能量与颜色 2
  • 鸿蒙2.0都来了,一起把环境搭建起来!

    自4月底开始 鸿蒙2 0系统便迎来公测 6月2日将举行鸿蒙操作系统以及华为全场景新品发布会 届时会正式推出鸿蒙OS稳定版 针对华为发布的鸿蒙系统 网上评论褒贬不一 有吹捧的 有无脑黑的 在这里一口君就不做评价了 但是有2点 对任何一个新兴事
  • spdk探秘-----vhost 、ISCSI、 NVMe-oF Target

    vhost target 这里我们主要介绍用SPDK vhost target来加速虚拟机中的I O 在介绍这个加速方案之前 我们先看看主流的I O设备虚拟化的方案 纯软件模拟 完全利用软件模拟出一些设备给虚拟机使用 主要的工作可以在Sim
  • http://www.xxx.com/ skipped. Content of size 67099 was truncated to 59363

    如果提示http www xxx com skipped Content of size 67099 was truncated to 59363 在nutch site xml中添加
  • python关系运算符连续使用_Python比较运算符(关系运算符)

    比较运算符 也称关系运算符 用于对常量 变量或表达式的结果进行大小比较 如果这种比较是成立的 则返回 True 真 反之则返回 False 假 True 和 False 都是 bool 类型 它们专门用来表示一件事情的真假 或者一个表达式是
  • Redis配置类

    天行健 君子以自强不息 地势坤 君子以厚德载物 每个人都有惰性 但不断学习是好好生活的根本 共勉 文章均为学习整理笔记 分享记录为主 如有错误请指正 共同学习进步 Redis配置类 Redis配置类1 Redis配置类2 在使用redis时
  • python 生成器

    生成器 对象后续元素按照某种算法推算出来 在python中 这种一边循环一边计算的机制 称为生成器 得到生成器的方法 1 利用列表推导式得到 cat generator py usr bin env python coding utf8 g
  • idea自动生成单元测类

    Navigate between tests and production code Intellj idea 中创建测试 test intellij idea 自动生成test单元测试 IntelliJ IDEA如何创建测试类 在Inll
  • 令人头秃的:你的主机中的软件中止了一个已建立的连接

    此文章来源于项目官方公众号 AirtestProject 版权声明 允许转载 但转载必须保留原链接 请勿用作商业或者非法用途 1 前言 最近在答疑群中 经常看到同学们遇到 你的主机中的软件中止了一个已建立的连接 这样的报错 这个报错可能的原
  • cpp: read and write utf-8 text file using vs 2022

    file geovindu h brief 业务操作方法 author geovindu Geovin Du date 2023 04 22 https learn microsoft com zh cn cpp build referen
  • 1400*C. No Prime Differences(找规律&数学)

    解析 由于 1 不是质数 所以我们令每一行的数都相差 1 对于行间 分为 n m之中有存在偶数和都为奇数两种情况 如果n m存在偶数 假设m为偶数 如果都为奇数 则 include

随机推荐

  • 中科大少年班毕业生撑起AI半壁江山!科技圈天才少年盘点

    中科大少年班毕业生撑起AI半壁江山 科技圈天才少年盘点 原创 刘燕 AI前线 AI前线 微信号ai front 功能介绍面向AI爱好者 开发者和科学家 提供AI领域技术资讯 一线业界实践案例 搜罗整理业界技术分享干货 AI论文解读 每周一节
  • BitTorrent协议规范(BitTorrent Protocol Specification)系列之B编码(Bencoding)-第一部分

    鉴定 BitTorrent是由布莱姆 科恩设计的一个端对端 peer to peer 文件共享协议 此协议使多个peers通过不可信任的网络的文件传输变得更容易 目的 此规范的目的是详细介绍 BitTorrent 协议规范 v1 0 Bra
  • [前端] iframe及postMessage使用解析

    这篇主要讲iframe标签 对于frameset frame noframe标签就不讲了 因为在h5中已经不支持了 一 iframe标签介绍 标签规定一个内联框架 一个内联框架被用来在当前 HTML 文档中嵌入另一个文档 二 iframe标
  • python图片上传

    1 前台
  • 【NLP】使用递归神经网络对序列数据进行建模 (Pytorch)

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • Linux截取字符串最后两位,linux的string操作(字符串截取,长度计算)

    按指定的字符串截取 1 第一种方法 varible string 从左向右截取最后一个string后的字符串 varible string 从左向右截取第一个string后的字符串 varible string 从右向左截取最后一个stri
  • 2022年,中国餐饮数字化进行到哪一步了?

    在餐饮数字化的进程中 企业有收获 但更多的却是失落 作者 斗斗 编辑 皮爷 出品 产业家 美团供应链里 有两个采购协议 要货协议的功能 在我看来就是一样的 十分鸡肋 黄晓辉为此还找到美团负责该业务的负责人 想要解答他的疑惑 他们业务负责人甚
  • 大数据毕设选题 - 深度学习股票预测系统(python Django)

    文章目录 0 前言 1 课题背景 2 实现效果 3 Django框架 4 数据整理 5 模型准备和训练 6 最后 0 前言 Hi 大家好 这里是丹成学长的毕设系列文章 对毕设有任何疑问都可以问学长哦 这两年开始 各个学校对毕设的要求越来越高
  • c#对接webservice接口

    方式一 需要填写地址 不能映射每个方法 工具类 using System using System CodeDom Compiler using System CodeDom using System Collections Generic
  • Win系统下安装Linux双系统教程(非常详细)从零基础入门到精通,看完这一篇就够了

    软件下载 软件 Linux 版本 18 0 4 语言 简体中文 大小 1 82G 安装环境 Win11 Win10 Win8 Win7 硬件要求 CPU 2 0GHz 内存 4G 或更高 下载通道 丨百度网盘 1 ubuntu18 0 4下
  • 【供应链架构day9】美团配送系统架构的演进之路:从MVP到规模化

    本文是美团永俊老师的分享 写在前面 美团配送自成立以来 业务经历了多次跨越式的发展 业务的飞速增长 对系统的整体架构和基础设施提出了越来越高的要求 同时也不断驱动着技术团队深刻理解业务 准确定位领域模型 高效支撑系统扩展 如何在业务高速增长
  • 杜比的音效生意

    转自 http tech sina com cn it 2010 08 25 13474586814 shtml 这家追求声音效果的企业 在其专利技术的基础上 不断延展自己的产业链 获得了高速成长 作者 陈庆春 杜比在中国消费电子市场有着非
  • 单元测试出现Class not found

    使用SpringBoot项目进行单元测试时 出现Class not found的报错 之前我是删除过测试部分 后来自己再写上去的 之后点击Maven的test 如下图 在运行就可以了
  • 差分GPS-RTK-千寻

    目录 GPS和GNSS的区别 差分GPS定位原理 1 位置差分原理 略 2 伪距差分原理 DGPS 3 载波相位差分原理 RTK 重点 千寻位置 GPS和GNSS的区别 GPS 指全球定位系统 Global Positioning Syst
  • UE4 FTP Client插件

    封装了ftplib的库 https github com mkulke ftplibpp 插件地址 https github com HeartlessLD UE4 FTPPlugin 这里大致说一下注意事项 可能有不全的 具体看代码 1
  • 【满分】【华为OD机试真题2023 JS】任务混部

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 任务混部 知识点差分 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 公司创新实验室正在研究如何最小化资源成本 最大化资源利用率 请你设计算法帮他们解决一个任务混
  • matlab 多核计算设置2

    由于处理器时钟频率的限制 增加核并不意味着是计算性能的提高 为了充分利用新的多核硬件在性能上的优势 软件的基层结构需要向并行计算转换 MATLAB并行计算工具箱就是这种需求的产物 它能很好地实现在多核系统上进行并行运算 文章以典型的数值计算
  • xray config.yaml文件配置出错解决

    开启监听时 出现 could not find expected 解决办法 xray 安全评估工具文档 去mitm模块复制一下粘贴到config中 mitm ca cert ca crt CA 根证书路径 ca key ca key CA
  • PAT (Basic Level) 1045 柳婼、旭神两大思路分析【测试点】样例

    1045 快速排序 25 分 著名的快速排序算法里有一个经典的划分过程 我们通常采用某种方法取一个元素作为主元 通过交换 把比主元小的元素放到它的左边 比主元大的元素放到它的右边 给定划分后的 N 个互不相同的正整数的排列 请问有多少个元素
  • 将字符串转化为16进制数

    在有些情况下 想得到n个16进制数 然而你只能得到一个字符串数组 数组中的数据都是文本形式 例如char s 1b5050508af890ef50 我想得到的是16进制数1b 50 而数组中的字符 每一位都可以转化为一个16进制数 1b转为