[Solved]Convert ASCII hex to int
-
heureka
VRonin's code works:
QVector()
"80: 1C 02 FC 85 FF 4F FF 1D 89 17 08 10 01 00 00 00 3B 87 69 00 82 00 48 09 88 10 00 00 "
4
QRegularExpressionMatch(Valid, has match: 0:(0, 3, "80:"), 1:(0, 2, "80"))
"1C" 28
"02" 2
"FC" 252
now I have to give eyh value to the different y
but I think I can gigure that out.@mpergand
this will divide first field from rest but how to divide the rest?
y1= field1,y2=field2 and so on
but I will test. -
@Leopold said in [Solved]Convert ASCII hex to int:
this will divide first field from rest but how to divide the rest?
y1= field1,y2=field2 and so on
but I will test.No need to split anything, you can access each byte in a QByteArray with at() or []
See the doc ... -
@VRonin
the example works great for transforming from hex to dec but i get the same row what i have in the txt now as a vektor. In my code you see that I have different y Vektors.
I need value of field1 in y1, field2 in y2 and so on.I can not figure out how to take the i into a loop with y(i). -
I tried this:
{ // iterate over all the matchesconst QRegularExpressionMatch hexMatch = i.next(); qDebug() << hexMatch.capturedRef(0) << hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16); //capturedRef contains the part matched by the regular expression y1.append(hexMatch.capturedRef(1).toUInt(Q_NULLPTR,16)); y2.append(hexMatch.capturedRef(2).toUInt(Q_NULLPTR,16)); y3.append(hexMatch.capturedRef(3).toUInt(Q_NULLPTR,16)); y4.append(hexMatch.capturedRef(4).toUInt(Q_NULLPTR,16)); }
-
yes I see that it is a loop but if i write :
if(eingangMatch.hasMatch()) { if(eingangMatch.capturedRef(1).compare("80",Qt::CaseInsensitive)==0) { // Eingang==("80:") qDebug() << eingangMatch; for(QRegularExpressionMatchIterator i = hexRegExp.globalMatch(line); i.hasNext(); ) const QRegularExpressionMatch hexMatch = i.next(); qDebug() << hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16); //capturedRef contains the part matched by the regular expression y1.append(hexMatch.capturedRef(1).toUInt(Q_NULLPTR,16)); y2.append(hexMatch.capturedRef(2).toUInt(Q_NULLPTR,16)); y3.append(hexMatch.capturedRef(3).toUInt(Q_NULLPTR,16)); y4.append(hexMatch.capturedRef(4).toUInt(Q_NULLPTR,16)); }
the qDebug() << eingangMatch; and qDebug() << hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16);
don't work and all my y vectors get "0"
"80: 1C 05 3A 85 FF 4F FF 1D 89 1E 08 10 01 00 00 00 3B 87 51 01 AF 00 58 09 88 10 00 00 "
QVector(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
QVector(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) -
@Leopold said in [Solved]Convert ASCII hex to int:
yes I see that it is a loop
I don't think you do...
int h=0; for(QRegularExpressionMatchIterator i = hexRegExp.globalMatch(line);i.hasNext();++h){ const QRegularExpressionMatch hexMatch = i.next(); qDebug() << hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16); switch(h){ case 1 : y1.append(hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16)); break; case 2 : y2.append(hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16)); break; case 3 : y3.append(hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16)); break; case 4 : y4.append(hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16)); break; default: break; } }