変数x、x-(0 ... F)を持つ16進ASCII形式[3x3x3x3x]の文字列があります。たとえば、私は文字列から新しい文字列に特定の16進値を抽出する
データ
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(出力)私は疑問に思う
ビットシフトなどと同じように速くなりますか?
あなたが試したことを示してください。 –
出力はまだ文字列か、それとも解析しますか?そして、 '_pext_u32'や' _mm_shuffle_epi8'のようなものを許可しますか? – harold
それは意味をなさない。 '0x30303f3f'は' 0x00ff'ではなく、 '0x3f3f3f3f'は' 0xffff'ではありません –