怎么把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进制在传输就无所谓的空格,也许是延时发送,看你的意思应该是发字符串,这加空格就很容易了,+“ ”