❶ linux下(用C/C++/QT)串口受到字符串信息,怎么把它处理成十六进制的字符串,以供数据处理。
如果是通过串口驱动的接口直接读取字符串信息,则需要查看该接口的定义。
如果是通过c标准库接口读取字符串信息,则是按照字节目读取。
不管哪种情况,你还需要了解发送端是按怎样的字节序发送这些字节,每一个发送单位的长度是多少,这样才能给出答案。
你这个问题应该是一个典型的嵌入式系统的问题,比较专业,一般人是帮不到你的,你需要请教业内人士。
满意请采纳。
❷ 怎样把一个字符串转换成16进制
主要有两个方法,其实都是对现有函数的使用:
方法1: sscanf()
函数名: sscanf
功 能: 从字符串格式化输入
用 法: int sscanf(char *string, char *format[,argument,...]);
以上的 format 为 %x 就是将字符串格式化为 16 进制数
例子:
#include <stdio.h>
void main()
{
char* p = "0x1a";
int nValude = 0;
sscanf(p, "%x", &nValude);
printf("%d\r\n", nValude);
}
输出:
26
方法2: strtol()
函数名: strtol
功 能: 将字符串转换为长整数
用 法: long strtol(char *str, char **endptr, int base);
上面的base就是我们要转换为几进制数
例子:
#include <stdio.h>
#include <stdlib.h>
void main()
{
char* p = "0x1b";
char* str;
long i = strtol(p, &str, 16);
printf("%d\r\n", i);
}
输出:
27
其实还有一种方法,就是用一个初始化为0~9~a~f的字符串数组,也就是一个十六进制对应表,用这个对应表即可算出一个十六进制字符串的数值,但这种发发太麻烦了,不推荐使用。
❸ linux 下有个hexmp函数,把二进制换成16进制显示,有没有功能相反的函数
vim 自带的 xxd 就可以完成转十六进制和反转的功能,反转是只要把十六进制数按它转出的格式排好(右侧的显示符号可以不管),就可以转换。如果不在乎转完的十六进制格式,那用 xxd -ps 更方便。
❹ 我在linux环境下用dd命令得到了一个文件,想转换成16进制文件。
用vim打开文件,在vim编辑器里使用命令%!xxd,文件内容全部变成16进制了。
❺ 如何将字符串转换为16进制数值
举个例子:233转变成e9
233/16 = 14 余数为9
14的十六进制为e,9的十六进制还是9,所以转换结果为e9.
也就是说:如果相除的结果小于1,则结果是多少就直接转换
如果结果在1和15之间,则转换后的结果如本例所示.
依此类推.
再举个例子:143转变成e9
143/16 = 8 余数为15
8的十六进制还是8,15的十六进制是f,所以转换结果为8f.
❻ linux程序怎么转换16进制C语言源码
C/C++ code?
1 char* str="hello";2 char buf[1024] = {0};3 for (int i=0;i<strlen(str);i++)4 {5 snprintf(buf+strlen(buf),1024-strlen(buif),"0x%x",str[i]);6 }
然后发送 buf
❼ 怎么把一个字符串转换成16进制数据
由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。但,二进制数太长了。比如int类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:000000000000000001100100面对这么长的数进行思考或操作,没有人会喜欢。
用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢?
2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。
❽ 怎样把字符串转成16进制数
字符类型是整型类型的一种,将其转换成int类型,然后再输出十六进制形式即可。下面是一个示例程序。
#include<iostream>
usingnamespacestd;
intmain()
{
charstr_test[]="helloworld ";
intlimit=strlen(str_test);
for(intinx=0;inx!=limit;++inx)
//用static_cast将字符类型转成int类型
cout<<str_test[inx]<<"---hex:"<<hex<<static_cast<int>(str_test[inx])<<" ";
cout<<endl;
return0;
}
程序执行结果:
❾ linux下c中怎样将字符串转换为16进制数据
字符串是一个字符数组,一个个字符转换成16进制数据。可以这样,
printf("%x\n", 'ab')
运行结果: 6162
❿ 字符串转换为16进制
有库函数stroul,原型为unsigned long strtoul(const char *nptr,char
**endptr,int base )
参数1:字符串起始地址
参数2:返回字符串有效数字的结束地址,这也是为什么要用二级指针的原因。
参数3:转换基数。当base=0,自动判断字符串的类型,并按10进制输出,例如"0xa",就会把字符串当做16进制处理,输出的为10。更多的下面详细阐述。