查看: 674|回复: 9

[未解决] 16进制字符串转ASCII

[复制链接]

该用户从未签到

发表于 2021-6-14 02:47 | 显示全部楼层 |阅读模式
我想把string“6867”转成string“hg”输出,h的ascii是68,g的ascii是67,求助一下有没有大神指点应该怎么写?

签到天数: 168 天

[LV.7]常住居民III

发表于 2021-6-15 00:05 | 显示全部楼层
本帖最后由 topdog 于 2021-6-15 00:13 编辑
XR8022 发表于 2021-6-14 22:42
我的原代码是String a = "686700af"
它应该怎么赋值给 char*HEX_Str呢?

void setup() {
  Serial.begin(9600);

  String inputString = "686700af";
  char* HEX_Str = inputString.c_str();
  Serial.println(HEX_Str);
  delay(100);
}

void loop() {
  ;
}

签到天数: 67 天

[LV.6]常住居民II

发表于 2021-6-14 09:48 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdint.h>
  4. void HEXtoASCII(char* input_array,uint16_t input_length,char *outputarray);
  5. int main()
  6. {
  7.         char *HEX_Str = "6867";
  8.         char ASCII_Str[50] = {0};
  9.         HEXtoASCII(HEX_Str,strlen(HEX_Str),ASCII_Str);
  10.         printf("%s\r\n",ASCII_Str);
  11.         return 0;
  12. }
  13. void HEXtoASCII(char* input_array,uint16_t input_length,char *outputarray)
  14. {
  15.         uint16_t i;
  16.         for(i = 0; i < input_length;i+=2)
  17.         {
  18.                 if(input_array[i] >= '0' && input_array[i] <= '9')
  19.                         outputarray[i/2] =  input_array[i] - '0';
  20.                 else if(input_array[i] >= 'a' && input_array[i] <= 'z')
  21.                         outputarray[i/2] =  input_array[i] - 'a' + 10;
  22.                 else if(input_array[i] >= 'A' && input_array[i] <= 'Z')
  23.                         outputarray[i/2] =  input_array[i] - 'A' + 10;
  24.                 outputarray[i/2] <<= 4;
  25.                 if(input_array[i + 1] >= '0' && input_array[i + 1] <= '9')
  26.                         outputarray[i/2] +=  input_array[i + 1] - '0';
  27.                 else if(input_array[i + 1] >= 'a' && input_array[i + 1] <= 'z')
  28.                         outputarray[i/2] +=  input_array[i + 1] - 'a' + 10;
  29.                 else if(input_array[i + 1] >= 'A' && input_array[i + 1] <= 'Z')
  30.                         outputarray[i/2] +=  input_array[i + 1] - 'A' + 10;
  31.         }
  32. }
复制代码
纯C风格

签到天数: 168 天

[LV.7]常住居民III

发表于 2021-6-14 18:41 | 显示全部楼层
为你写了一篇《Arduino16进制字符串转ASCIIhttps://www.arduino.cn/thread-104462-1-1.html

该用户从未签到

发表于 2021-6-14 09:42 | 显示全部楼层
每个成员-0x30,十位乘以10加个位

该用户从未签到

 楼主| 发表于 2021-6-14 22:33 | 显示全部楼层
topdog 发表于 2021-6-14 18:41
为你写了一篇《Arduino16进制字符串转ASCII》https://www.arduino.cn/thread-104462-1-1.html ...

好的非常感谢

该用户从未签到

 楼主| 发表于 2021-6-14 22:42 | 显示全部楼层

我的原代码是String a = "686700af"
它应该怎么赋值给 char*HEX_Str呢?

该用户从未签到

 楼主| 发表于 2021-6-15 12:50 | 显示全部楼层
topdog 发表于 2021-6-15 00:05
void setup() {
  Serial.begin(9600);

好的非常感谢

签到天数: 168 天

[LV.7]常住居民III

发表于 2021-6-20 01:28 | 显示全部楼层
为你再写了一篇《Arduino16进制字符串转ASCII(下)》https://www.arduino.cn/forum.php ... mp;extra=#pid615900

该用户从未签到

 楼主| 发表于 2021-6-26 13:36 | 显示全部楼层
topdog 发表于 2021-6-20 01:28
为你再写了一篇《Arduino16进制字符串转ASCII(下)》https://www.arduino.cn/forum.php?mod=viewthread&ti ...

感谢作者!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

智能“百味”勺子开发实战营,为你的生活添滋味!
智能“百味”勺子开发实战
想不想拥有一把神奇的“百味”勺子,把索然无味的食物变出酸甜苦辣咸的丰富滋味
20sffactory 三自由度3D打印机械手臂 - 高速移动
20sffactory 三自由度3D打
这款机械臂作者没有给他起名字,用作者的名字来命名. 目前为止,生态最好,做的最完
多位数码管显示项目——以TM1650为例
多位数码管显示项目——以
以下是用搭载TM1650的4位数码管,显示电位器所代表0到1023的模拟信号数值 示意图:
新手小白付费拜师求教:TM1650四位时钟数码管的具体用法
新手小白付费拜师求教:TM
从淘宝购买的TM16504位数码管的时钟模块,卖家给了程序,但是完全不会用。求一位老师
【Arduino】168种传感器模块系列实验(76)---TTL转RS-485模块
【Arduino】168种传感器模
37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表