ASCII格式的16进制字符串转到ASCII字符串

C# byte数组与16进制字符串相互转化 在网络通信中常利用字节数组(byte[]) 收发数据,是因为计算机中只能识别0/1编码,一个字节Byte 占8 位 bit(0/1编码),非常方便的表达二进制bit流 的传输序列。而网络抓包或收发数据包检测分析时常利用16进制格式显示,因为二进制书写较长,难以记忆,而每4个二进制位对应1个16进制位,两位16进制的数刚好表达一个字节(8位),比较直观。二进制和16进制之间具有对应关系见下表。 阅读详情

本程序实现的功能是将ASCII格式的16进制字符串转到ASCII字符串。例如,字符串“6a61636b”可转化为jack。

啥都不说了,先给程序

//
//  main.cpp
//  hex_2_asc
//
//  Created by 刘鹏 on 14-3-18.
//  Copyright (c) 2014年 刘鹏. All rights reserved.
//
// 

#include <iostream>
#include <string>
using namespace std;

int main(int argc, const char * argv[])
{
    string instr,outstr;
    char tmp;
    int big,small,final_dec;
    cout<<"input"<<endl;
    cin>>instr;
    for (string::iterator it = instr.begin();
         it != instr.end(); it++)
    {
        
        // char类型的16进制先转化为10进制的int
        //  第1个16进制数
        final_dec = 0;
        if (*it >= 'a' && *it <= 'f')
        {
            big = *it - 87;
        }
        else if (*it >= 'A' && *it <= 'F')
        {
            big = *it - 55;
        }
        else if (*it >= '0' && *it <= '9')
        {
            big = *it - 48;
        }
        else
            big = 0;
        final_dec = final_dec + (big<<4);
        it++;
        
        //  第2个16进制数
        if (*it >= 'a' && *it <= 'f')
        {
            small = *it - 87;
        }
        else if (*it >= 'A' && *it <= 'F')
        {
            small = *it - 55;
        }
        else if (*it >= '0' && *it <= '9')
        {
            small = *it - 48;
        }
        else
            small = 0;
        final_dec += small;
        if (final_dec > 255)
        {
            final_dec = 255;
        }
        tmp = final_dec;
        outstr.push_back(tmp);
    }
    cout<<"translated"<<outstr<<endl;
    return 0;
}

程序的实现原理是:

1. 将字符串转化为对应的十进制数。因为2个十六进制数可以表示一个ASCII码值,所以要提取连续的两个十六进制数,并把它转化为对应的十进制数。

2. char类型和int类型可以相互转换。

python利用pyserial串口模块,两种格式发送数据:16进制发送与字符串发送 串口发送数据一般会分为16进制格式发送和字符串格式下发,两种格式下发需要对数据进行不同的处理才能正确下发 # 通过串口下发16进制 if self.lineEdit.text() != "": list_use = [] num = self.lineEdit.text().split(" ") for i in range(len(num)): list_use.append(int(num[i], 16)) data_all = bytes(list_use) data01 = ''.jo 阅读详情

相关推荐

16进制字符串-ASCII码文本互转工具

16进制字符串与ASCII码文本互转,包含windows离线可运行程序

AhuiLe的博客 831

将16进制的字符串转换为对应的字符

16进制的ASCII字符串转换为对应字符串

Walker—fire的博客 4888

ASCII字符串转换为16进制字符串

来构建一个字符串流。通过遍历输入的字符串,将每个字符转换为对应的ASCII值(使用。设置流的格式为十六进制,将转换后的十六进制值写入字符串流中。函数接受一个ASCII字符串作为参数,并使用。将字符转换为整数),然后使用。

m0_46376834的博客 2293

C#String字符串和ASCII码(16进制)的转换

String字符串和ASCII码(16进制)的转换

wangjunlei的专栏 3612

十六进制转字符串工具:解析与实践

本文还有配套的精品资源,点击获取 简介:十六进制是一种重要的数字表示法,在计算机科学和编程中被广泛使用。它基于16个符号,用于处理二进制数据如内存地址或文件内容等。字符串是由字符组成的序列,用于存储文本信息。十六进制转字符串工具旨在将十六进制数据转换为可读的字符串,对于开发者来说非常实用。这种转换首先将十六进制数解析为二进制表示,然后根据二进制序列对应的Unicode值找到...

weixin_33480380的博客 2720

Claude Code教程(二) | Claude Code 核心信息与使用指南

Claude Code 核心信息与使用指南

qq_20236937的博客 2183

16进制和ASCII字符互转

C语言中,字符和其ASCII码是等价的,比如’A’这个字符和单字节整数65是等价的.比如char c=’A’;int a=c;的话,a就是65//函 数 名:CharToHex()//功能描述:把ASCII字符转换为16进制//函数说明://调用函数://全局变量://输 入:ASCII字符//返 回:16进制////////////////////////////////////...

mianhuantang848989的专栏 2万+

昆仑通态屏幕制作(连载1)---接触篇

写在开始 背景:最近出了做QT、LORA和4G,还做了一个屏幕。以前做了一个迪文的串口屏幕,发现网上的教程很多,所以连载就不更新了,并且迪文屏幕的设置什么的比较简单,应该从网上都能找到对应的教程。而现在用的昆仑通态的屏幕属于嵌入式屏幕,至于为啥叫嵌入式,也不是很明白,反正就是需要用这个屏幕,嵌入式不嵌入式不重要了。重要的是能用,并且能实现串口屏幕不能实现的功能。所以选定昆仑通态的一款屏幕。 文章语言:我比较习惯用比较糙的语言介绍做的东西,有时候不太准备,但是为了方便理解,还请大家谅解。用...

weixin_45426095的博客 6736

[C语言] 16进制整数转字符串

本文系统讲解C语言中字符串与十六进制数据的三种核心转换方法:字符串转ASCII(解析十六进制字符串为字节)、字符串转hex(格式化字节为十六进制字符串)、16进制整数转字符串(将字节转为可读格式)。重点分析转换原理与规律,提供安全版代码实现,包含非法字符过滤、缓冲区溢出防护及奇偶长度校验。通过串口通信实战示例,展示其在嵌入式开发中的综合应用,并对比三者适用场景,帮助开发者高效、安全地完成底层数据处理。

嵌入式单片机实验室 1万+

Blender学习笔记——制作向量场

#下载Blender - UE4 - FGA Vector Field Editor插件的压缩包,Github上的下载地址如下:https://github.com/isathar/Blender_UE4_VectorFieldEditor #下载并解压后将FGA VectorFields文件夹复制到C:\Program Files\Blender Foundation\Blender 2.83\2.83\scripts\addons目录下,此步骤可根据blender安装的位置自行调整,只要放入addon

wychao2020的博客 1724

Claude Code 完整学习笔记

Claude Code 学习笔记摘要 Claude Code是Anthropic推出的智能编码工具,基于Claude Opus 4.5模型构建,提供跨平台支持(终端/VS Code/JetBrains/Web等)。核心功能包括: 代码库理解与多文件编辑 命令执行与开发工具集成 智能体协作开发流程 安装要求Node.js≥18,提供原生/Homebrew/npm等多种安装方式,支持环境变量配置API访问。基础交互模式包括会话管理、文件操作和代码审查等功能,可自动读写文件并执行精确修改。 (149字)

虚心若愚 810

Qt将int数据转为16进制后,以ASCII码存入QByteArray型数据

用四个字节存储100的ASCII码。首先将整形数据100转为四位16进制,之后每个字符按ASCII形式存入QByteArray型的数据中,每个字符占用一个字节。此处提供两种方法: 方法一: 首先,将整形数据首先转为指定位数的16进制: QString hex = QString("%1").arg(temp, 4, 16, QLatin1Char('0'));//转为4位16进制,不够四位前面补零 之后将每个字符存入QByteArray型的数据中,一个字符占用一个字节: QByteArray arr1;

weixin_45589062的博客 4086

华为OD机试新系统真题【终端设备档位差异统计】

华为OD机试 新系统真题【终端设备档位差异统计】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【终端设备档位差异统计】多语言题解。

qq_45776114的博客 783

QT中16进制二进制字符串的转换

最近使用串口通信操作nfc卡的扇区内的内容设及到了很多数据类型之间的转换,今天总结一下。 1、10进制16进制字符串相互显示 10->16 int a=10; Qstring b = QString("%1").arg(b,2,16,QLatin1Char(‘0’)); 参数说明 参数1即需要转换的int型数字 参数2 表示 最小宽度 参数3 表示要转的进制类型 参数4为填充...

weixin_42542969的博客 1万+

【UVM实战】第七章:UVM中的寄存器模型(1)寄存器模型简介

寄存器模型简介~

悟已往之不谏 知来者之可追 2070

微调大模型如何准备数据集——常用数据集,Alpaca和ShareGPT

在大模型微调中,我们一般使用Alpaca 和 ShareGPT和两种格式的数据集。

Science prince的博客 1096

matlab--16进制转ASCII代码

matlab–16进制转ASCII代码 前言 由于对RTK设备输出转换的需要,撰写了一个matlab转换16进制到ASCII代码。 一、读文件 1.textscan C = textscan(fileID,formatSpec) 将已打开的文本文件中的数据读取到元胞数组 C。该文本文件由文件标识符 fileID 指示。使用 fopen 可打开文件并获取 fileID 值。完成文件读取后,请调用 fclose(fileID) 来关闭文件。 配合fopen使用! 2.cell数组 1.cell数组的创建 可以直

yuanshixin_的博客 8564

Android15音频进阶之AudioReach架构agmcap bringup调试(一百二十三)

本篇目的:Android15音频进阶之AudioReach架构agmcap录音调试。

Android系统攻城狮 2229

python- ASCII字符串转为16进制格式

代码 #!/usr/bin/python3 hexForamt="\\x" # 更改这里的ASCII字符串 asciiStr="AAABBBccc" def ascii2hex(asciiStr): #字符串转为16进制 hexInitData=asciiStr.encode().hex() #拼接为\x格式 hexFinalData='' for i in range(0, int(len(hexInitData)), 2): he...

qq726232111的博客 3399

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ASCII 转16进制 和 16进制转ASCII

int Ascii2Hex(const char *hex,char * ascii)             //16进制转ASCII { int len = strlen(hex), tlen, i, cnt;  for (i = 0, cnt = 0, tlen = 0; i {  char c = toupper(hex[i]);  if ((c>=0&& c=A&& c 

minmin283517的专栏 6601

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

QT中常见QByteArray,QString,char,10进制,16进制之间转换

  ​QString是专门用来处理字符串的,除了能处理ASCII编码字符,还包括各国语言的编码,默认情况下QString会把所有数据当做utf-8编码来处理。QByteArray只是单纯用来处理数据的,除了能处理ASCII编码字符,其它复杂的编码不能处理,直接以字节流的方式来对待 1:QByteArray转QString 方法一: QByteArray array; QString str = QString(array); >>不能显示中文 需要显示中文的时候: QString str =

weixin_38931060的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

字符串转为16进制数

/***************************************************************************** 函 数 名 : HexStrToByte 功能描述 : 将字符串转化为16进制数 #include <ctype.h> 输入参数 : const char* source : 需要转化的字符串。 unsigned ch...

kayshi的博客 3251

字符串与16进制ASCII转换工具

字符串与16进制ASCII转换工具 【下载地址】字符串与16进制ASCII转换工具 这是一个高效便捷的字符串与16进制ASCII转换工具,专为开发者设计。通过它,您可以轻松实现字符串到16进制ASCII码的相互转换,满足多种编程场景的需求。无论是将文本转换为16进制格式,还是将16进制数据还原为可读字符串,操作都简单直观...

gitblog_06756的博客 345

C语言字符串转ASCII、ASCII转字符串、字符串转数组、sprintf、toascii、类型强转、strtol、atoi

C语言字符串转ASCII、ASCII转字符串、字符串转数组、sprintf、toascii、类型强转、strtol、atoi

weixin_42623551的博客 4563

关于c++16进制字符串与ASCII字符串的相互转换

最近在通过SOCKET模拟一个客户端,利用多线程发送心跳包和接受服务端的发过来的数据并进行处理回复。 在进制转换上弄得很无奈,现在解决了 //普通字符串转换程16进制字符串 int str2hexstr(string &str){ char chars[20] = "0123456789ABCDEF"; char ll[255]; int ...

weixin_38797553的博客 2696

在LabVIEW中将十六进制转换为十进制或ASCII

更新 Nov 12, 2020 环境 软件 LabVIEW 在LabVIEW中,如何将十六进制值转换为十进制值?当前,我正在尝试使用“扫描值功能”,但不确定需要连接什么。 我正在与一种以十六进制值形式发送回信息的仪器进行通信。例如,不是发送字母L,而是发送回其相应的十六进制表示形式4C。如何在LabVIEW中以编程方式将此十六进制表示形式转换为其相应的ASCII表示形式?如果我需要将信息以十六进制形式发送回仪器该怎么办? 将十六进制转换为十进制 要将十六进制字符串转换为其十进制表示形式,请使用“ 扫描

qq_31882619的博客 1万+
上一篇: 字符串压缩之C++实现
下一篇: leetcode题解记录【2. 两数相加】
wulathink
博客等级 码龄16年 3粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值