搜索

怎么把16进制的字符串转换成16进制数从串口发出去

发布网友 发布时间:2024-10-24 09:42

我来回答

5个回答

热心网友 时间:2024-11-01 21:35

帮你写了个子程序,输入一个1或2字节的字符串,输出对应的十进制值。如a=hex2dec("FF")返回255给a。然后mscomm1.output=chr(a)就把255发送出去了。

Private Function hex2dec(ByVal hex As String) As Byte
Dim a, d As Byte
hex = UCase(hex)
If Len(hex) = 1 Then hex = "0" & hex
a = Asc(Left(hex, 1))
d = IIf(a <= &H39, a - &H30, a - 55) * 16
a = Asc(Right(hex, 1))
d = d + IIf(a <= &H39, a - &H30, a - 55)
hex2dec = d
End Function

热心网友 时间:2024-11-01 21:37

#include <stdio.h>
#include <stdlib.h>//strtol头文件
//呵呵CSTRING转CHAR不用我说了吧
int main()
{
char *p="0x11";
char *str;
int i = (int)strtol(p, &str, 16);//十六进制
printf("%d/n",i);
return 0;
}
这个C++标准库的,可以用

热心网友 时间:2024-11-01 21:33

#include <stdio.h>
#include <stdlib.h>//strtol头文件
//呵呵CSTRING转CHAR不用我说了吧
int main()
{
char *p="0x11";
char *str;
int i = (int)strtol(p, &str, 16);//十六进制
printf("%d/n",i);
return 0;
}

热心网友 时间:2024-11-01 21:39

单独提取字符串中的每一个字符,如果是字符0~9(0x30~0x39)的就减去0x30,如果是字符A~F(0x41~0x46)的就减去0x37,剩下就好办了。

比如你输入的是“4A”,将字符4减去0x30得到0x04,字符A减去0x37得到0x0A,将0x04左移四位得到0x40,再和0x0A相加得到0x4A,即01001010了。

热心网友 时间:2024-11-01 21:31

如果是16进制在传输就无所谓的空格,也许是延时发送,看你的意思应该是发字符串,这加空格就很容易了,+“ ”
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top