gpt4 book ai didi

c - 从字符串中提取某些十六进制值到新字符串

转载 作者:行者123 更新时间:2023-11-30 16:52:59 25 4
gpt4 key购买 nike

我有一个十六进制 ASCII 格式 [3x3x3x3x] 的字符串,其中包含变量 x、x-(0...F)。

例如我可以获取数据

inData = 0x30303f3f 并希望将其转换为:

outData = 0x00ff

inData = 0x3f3f3f3f

outData = 0xffff

这里进行位运算的最佳方法是什么,真的我只想跳过“3s”?

// receive answer from device
if (ReceiveMsg(FLog, TLog::INFO, FSerial, &ReceiveStr))
{
int side;
char inData[4];
char serial[6];
char status;

if (sscanf(ReceiveStr.GetData(), "\x2%6s\x84%1d%4c%c", &serial, &side, &inData, &status) == 4) {

*Status = status & 0x0f;

// decode hex ASCII
int time = 0;
int j = 0;
for (int i = 3; i >= 0; i--) {
time = time + ((inData[i] & 0x0f) *(pow(16, j)));
j++;
}
*Timer = time;
result = true;
}
}
  • inData[4] = 0x30、0x30、0x3f、0x3f
  • 时间 = 255(输出)

我想知道是否有任何方法可以更快地完成 for 循环的操作,例如移位或类似的操作?

最佳答案

char inData[] = "0x30303f3f";
char outData[7] = "0x";
outData[2] = inData[3];
outData[3] = inData[5];
outData[4] = inData[7];
outData[5] = inData[9];

关于c - 从字符串中提取某些十六进制值到新字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41062010/

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