社区
C++ Builder
帖子详情
将Hex串,转换成对应的ASCII串的问题,谁能给我一个例子啊?
binue
2003-10-20 03:54:33
我现char*的如下hex串:
0x65 0x66 0x67 0x68……
或:
65 66 67 68……
等Hex串,我想将其转换成其十六进制值
对应的ASCII char*串,谁能帮我写一个函数啊?
由于小弟初学C++ ,写了一个问题多多,希望
那位大哥指教一下,小弟不盛感激,谢谢!!!!
...全文
83
9
打赏
收藏
将Hex串,转换成对应的ASCII串的问题,谁能给我一个例子啊?
我现char*的如下hex串: 0x65 0x66 0x67 0x68…… 或: 65 66 67 68…… 等Hex串,我想将其转换成其十六进制值 对应的ASCII char*串,谁能帮我写一个函数啊? 由于小弟初学C++ ,写了一个问题多多,希望 那位大哥指教一下,小弟不盛感激,谢谢!!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
binue
2003-10-21
打赏
举报
回复
fatwave(风中的雨)的函授数有很多缺陷,只考虑了理想情况,
如果其hex串带0x和空格的话,将得不到正确结果。
谢谢大家的指点。
binue
2003-10-20
打赏
举报
回复
我想的是将多个的连接在一起的十六进制串转换成其十六进制对应的ASCII串,
不要要将单个的十六进制串转换成对应的ASCII!!,
有没有好的办法啊!!
appleIIappleII
2003-10-20
打赏
举报
回复
StrToInt(你的字符串)即可
如你的字符串为0X65想去掉0x则可以用SubString()来完成,再用转StrToInt()
fatwave
2003-10-20
打赏
举报
回复
/*********************************进制转换**********************************/
//---------------------------------------------------------------------------
int communication::HtoD(unsigned char *hex_str, unsigned char *bin_str)
/*
"ba087d4012345678" -> {0xba, 0x08, 0x7d, 0x40, 0x12, 0x34, 0x56, 0x78}
For ASCII string and OS, not for EBCDIC string and OS.
Return: > 0 --- bin_str length
< 0 --- error
M.L.Y 1999.12.28
*/
{
int i, j, n;
int c1, h1, h2;
unsigned char *sh = hex_str, *sb = bin_str;
n = strlen(sh);
if(n < 2) return -1;
if(n % 2 != 0) return -2;
for(i = 0, j = 0; i < n; j++)
{
if((h1 = hex_to_num(sh[i++])) < 0) return -1;
if((h2 = hex_to_num(sh[i++])) < 0) return -1;
c1 = h1 << 4 | h2;
sb[j] = c1;
}
return j;
}
//---------------------------------------------------------------------------
int communication::DtoH(unsigned char *bin_str, int len, unsigned char *hex_str)
/*
{0xba, 0x08, 0x7d, 0x40, 0x12, 0x34, 0x56, 0x78} -> "ba087d4012345678"
For ASCII string and OS, not for EBCDIC string and OS.
Return: > 0 --- hex_str length
< 0 --- error
M.L.Y 1999.12.28
#include <stdio.h> 标准库
*/
{
int i, j;
unsigned char *sb = bin_str, *sh = hex_str;
for(i = 0, j = 0; i < len; i++, j+=2)
sprintf((char *)sh+j, "%02X", sb[i]);
sh[j] = NULL;
return j;
}
//---------------------------------------------------------------------------
int communication::hex_to_num(char hex1char)
/*
'a' or 'A' -> 10, '1' -> 1
If hex1char not in '0'-'9','A'-'F','a'-'f' return -1
*/
{
if(hex1char >= '0' && hex1char <= '9') return hex1char - '0';
if(hex1char >= 'A' && hex1char <= 'F') return hex1char - 'A' + 10;
if(hex1char >= 'a' && hex1char <= 'f') return hex1char - 'a' + 10;
return -1;
}
huangjuliang
2003-10-20
打赏
举报
回复
0x65
就是十六进制值数呀!
huangjuliang
2003-10-20
打赏
举报
回复
Edit1->Text=StrToInt("0x65");//Edit1->Text=101;
yjy1001
2003-10-20
打赏
举报
回复
..........
就算是初学 也应该看懂fatwave(风中的雨) 的函数吧
fatwave
2003-10-20
打赏
举报
回复
"ba087d4012345678" -> {0xba, 0x08, 0x7d, 0x40, 0x12, 0x34, 0x56, 0x78}
{0xba, 0x08, 0x7d, 0x40, 0x12, 0x34, 0x56, 0x78} -> "ba087d4012345678"
不是写的很清楚了吗?
Behard
2003-10-20
打赏
举报
回复
现在就开始做作业了吗?
《C语言/C++学习指南》加密解密篇(安全相关算法)
本套视频教程介绍加密解密相关的常见算法,指出每种算法的应用场景,并给出使用示例。具体包含: (1) 数据转换(
HEX
和base64) (2) 对称加密 (DES, 3DES, AES) (3) 校验 CRC, MD5摘要, SHA1摘要 (4) 数字签名(HMAC-SHA1) , 并介绍了crypto++这个算法库的使用方法。
串
口发送数据
ascii
和
hex
的区别
串
口发送可以包含
ascii
发送和
hex
十六进制发送,不管采用哪种方式发送,计算机内部都是以二进制发送的,
ascii
发送会将你发送的
ascii
字符转换为
对应
的
ascii
码,0-127之间,然后将
对应
的
ascii
码以二进制方式在底层发送出去出;而对于接收端来说,如果发送方以十六进制发送,接收方需要以十六进制接收,发送方以
ascii
发送接收方则以
ascii
方式接收。所以对于发送{0xff,0x01}这种数据就是发送的二进制数据,底层是一样的,所以发送方和接收方的底层都是11111111 00000001。
C语言快速互转
HEX
(16进制)和原始字符
串
/数组
hex
转数值 缘由 这个起因是昨晚群里有人在讨论怎么把字符
串
转成
HEX
方法最佳,讨论到最后变成哪种方法效率最优了。毕竟这代码是要在MCU上面跑的,要同时考虑到时间和空间的最优解。 当然讨论的是有结果的,具体实现的方法和代码在下面展示。 char数组转16进制
HEX
串
例子
: 将如下的量 char str[] = “12345”; char data[] = {1,2,3,4,5,0xff}; C 转成 “313233343500” “0102030405FF” C 这样的结果 这个其实很简单,追求速度的话,
php如何将
hex
+
ascii
文件包解析,
hex
文件解析
Keil开发环境编程时对源程序进行编译链接后都可以成
一个
可执行文件即
hex
文件,但是有不完全是
一个
可执行文件。然后可以通过烧录工具烧写到
对应
的单片机的flash中,当然也还有其他方法可以进行烧录。大家在编程时是否对生成的
hex
文件有这样的疑问:1、当
hex
文件的大小大于单片机的flash时烧录工具还是可以把
hex
文件烧写到flash中呢;2、单片机运行的是二进制指令和数据,那么
hex
文件的内容...
用查表的方法将一位十六进制数
转换成
与它相应的
ASCII
码
首先对于将十六进制数
转换成
他相应的ascll这句话是什么意思? 举个
例子
,比如说一位十六进制他的取值为 0-f,那么我们将它存贮在内存中,他们的ascll字符显示并不是0,1,2,3,…,a,b,c这样的字符 而我们的目的就是让他们在内存中转化为相应的0,1,2,3,…,a,b,c(ascll字符) 这个转换方式我们不采用通过运算方式来取得,而是采用查表的方式 他要怎么使用的呢? 举个
例子
: 我们有
一个
以字节存储的存储单元,保存的值为:01H 他的ascll吗
对应
的16进制为31H,我们只要找到表中的31
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章