gpt4 book ai didi

c - 如何将 char 字符串转换为十六进制值

转载 作者:行者123 更新时间:2023-11-30 21:06:55 26 4
gpt4 key购买 nike

我遇到一种情况,即在 USB Tx 模式下逐字节串行接收字符。现在我陷入了接收 7a 的位置,我的目标是创建 0x7a 数据。

请为我提供一些解决方法。

void converttohex(int recsize) {

BYTE ccount = 0;
//BYTE *recptr = (BYTE*)calloc(CommOP_Rx.bDataLength, sizeof(BYTE));
*recptr = 88;
*(recptr + 1) = 16;
*(recptr + 2) = 1;
*(recptr + 3) = 224;
*(recptr + 4) = 1;

for (xp = 12, s = 5; xp < (CommOP_Rx.bDataLength - 4); xp++,s++) {
if (xp == 12) {
for (xp = 12; (*(recimage + xp)) != ','; xp++)
ccount++;
if (ccount == 1) {
xp = 12;
xq = (*(recimage + xp) - 48);
*(recptr+s) = xq;
xp++;
} else
if (ccount == 2) {
xp = 12;
xq = (*(recimage + xp) - 48) * 10;
xw = (*(recimage + (++xp)) - 48);
*(recptr + s) = xq + xw;
xp++;
} else
if (ccount == 3) {
xp = 12;
xq = (*(recimage + xp) - 48) * 100;
xw = (*(recimage + (++xp)) - 48) * 10;
xe = (*(recimage + (++xp)) - 48);
*(recptr+s) = xq + xw + xe;
xp++;
}
}
xp++;
if (((*(recimage + xp)) == 'a') || ((*(recimage + (++xp))) == 'a')) {
--xp;
if (((*(recimage + xp)) == 'a')) {
xq = (*(recimage + xp) - 48) * 10;
} else
xq = (*(recimage + xp) - 48);
xw = 'a';
*(recptr + s) = xq +xw;
}
xq = (*(recimage + xp) - 48) * 10;
xw = (*(recimage + (++xp)) - 48);
*(recptr + s) = xq + xw;
}
for (xp = 0; xp < (CommOP_Rx.bDataLength - 4); xp++) {
*(recimage + xp) = *(recptr + xp);
}

基本上,我在这里采样一些数据,这是十六进制图像数组,并将其存储在我的 MCU 数组中。但是在这里我已经实现了,当我收到两个连续的数据(其中是整数0-9)时,我将减去48,因为所有字节都是字符编码的,到目前为止它工作正常,但是在接收之后十六进制的 A-F,假设我收到了 '7' 和 'a' 并且它必须是 value=0x7a ,因此我需要此转换帮助!!

最佳答案

将其存储在以 null 结尾的字符串中并从中读取。

// Assume N is a big number
char str[N] = "7A";
int ret;
sscanf(str, "%x", &ret);
printf("%d", ret); // Output: 122

要重复执行此操作,请让程序构造此数组:

int i = 0;
while (read_data(&ch)){
// Assume ch is in "0123456789ABCDEFabcdef"
str[i++] = ch;
}
str[i] = 0;
// Now parse it
int ret;
sscanf(str, "%x", &ret);

关于c - 如何将 char 字符串转换为十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46298663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com