将QString转换为unsigned short int

吉勒斯·古吉劳姆

我需要一个QString(例如“ A”)并将此字符串转换为0x41。输入是QString,输出必须是“ WORD”(微软的东西)。

在我的情况下,WORD是一个无符号的short int。我试过了 :

Qstring str = "A"
qDebug() << str.toLatin1().toHex().prepend("0x");

结果是好的“ 0x41”,但是它不是一个无符号的短int :(我已经尝试过强制转换,但是它不起作用。

公用答案似乎使用“ toUShort”,但是我的代码不适用于此更改。我想用dll winuser(https://msdn.microsoft.com/zh-cn/library/windows/desktop/ms646270%28v=vs.85%29.aspx模拟键盘

此代码的工作原理:

INPUT key;
key.type = INPUT_KEYBOARD;
key.ki.wScan = 0; // hardware scan code for key
key.ki.time = 0;
key.ki.dwExtraInfo = 0;

key.ki.wVk = 0x42; // virtual-key code for the "a" key

key.ki.dwFlags = 0; // 0 for key press
SendInput(1, &key, sizeof(INPUT));
key.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
SendInput(1, &key, sizeof(INPUT));

那没有:

QString str = "a";
bool ok;

INPUT key;
key.type = INPUT_KEYBOARD;
key.ki.wScan = 0; // hardware scan code for key
key.ki.time = 0;
key.ki.dwExtraInfo = 0;

key.ki.wVk = str.toUShort(&ok,16);

key.ki.dwFlags = 0; // 0 for key press
SendInput(1, &key, sizeof(INPUT));
key.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
SendInput(1, &key, sizeof(INPUT));

也许只是因为空头返回42而不是0x42。

- 解决方案 -

void SyncKeyboard::writeUID(QString uid)
{
    qDebug() << uid;

    for(int i = 0; i < uid.length(); i++)
        pressKey(uid.at(i).unicode());
}

void SyncKeyboard::pressKey(ushort letter)
{
    INPUT key;
    key.type = INPUT_KEYBOARD;
    key.ki.wScan = 0; // hardware scan code for key
    key.ki.time = 0;
    key.ki.dwExtraInfo = 0;
    key.ki.wVk = letter;
    key.ki.dwFlags = 0; // 0 for key press
    SendInput(1, &key, sizeof(INPUT));
    key.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
    SendInput(1, &key, sizeof(INPUT));
}
他们有

如果您只需要获取一个无符号的短整数,即来自的十六进制ASCII码A,则可以尝试使用QByteArray :: toUShort

ushort QByteArray::toUShort ( bool * ok = 0, int base = 16 ) const 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Swift中将Int强制转换为unsigned short

来自分类Dev

在{}中将'65280'从'int'转换为'short int'

来自分类Dev

如何将const unsigned short转换为unsigned short?

来自分类Dev

如何在C ++中将unsigned int转换为两个unsigned short?

来自分类Dev

如何将nullable int强制转换为nullable short?

来自分类Dev

将int转换为16位无符号short

来自分类Dev

将无符号字符转换为int和short

来自分类Dev

将int []转换为short [],反之亦然

来自分类Dev

如何将nullable int强制转换为nullable short?

来自分类Dev

在C中将int转换为short

来自分类Dev

使用格式说明符%d和%u将类型转换〜0转换为(unsigned int)和(unsigned short),对于short产生相同的结果,但对于int产生不同的结果

来自分类Dev

程序集x86-将short int转换为int(WORD转换为DWORD)

来自分类Dev

在应用按位运算符“〜”之后,从“ int”转换为“ unsigned short”

来自分类Dev

自动将int转换为unsigned int

来自分类Dev

C ++中unsigned int与unsigned short的区别

来自分类Dev

如何在C中将int转换为short int?

来自分类Dev

How to cast Int to unsigned short in Swift

来自分类Dev

Convert int to 16 bit unsigned short

来自分类Dev

将char [2]转换为unsigned short时出错?

来自分类Dev

unsigned short int和unsigned int或unsigned short之间有什么区别?

来自分类Dev

int *数组到short *数组的转换

来自分类Dev

当将int强制转换为short并被截断时,如何确定新值?

来自分类Dev

不一致的结果将无符号[char,short,int,long]转换为double

来自分类Dev

将数字(short,int,long,float,double,bigint)转换为字节数组:Scala / Java

来自分类Dev

如何将unsigned int转换为unsigned char数组

来自分类Dev

gcc奇怪的转换警告(从'int'转换为'A <B> :: count_type {aka short unsigned int}'可能会改变其值)

来自分类Dev

C++ 没有已知的从 'int*' 到 'uint16_t* {a ka short unsigned int*}' 的转换

来自分类Dev

在C中将char转换为unsigned short

来自分类Dev

使用unsigned int而不是unsigned short更改行为

Related 相关文章

  1. 1

    如何在Swift中将Int强制转换为unsigned short

  2. 2

    在{}中将'65280'从'int'转换为'short int'

  3. 3

    如何将const unsigned short转换为unsigned short?

  4. 4

    如何在C ++中将unsigned int转换为两个unsigned short?

  5. 5

    如何将nullable int强制转换为nullable short?

  6. 6

    将int转换为16位无符号short

  7. 7

    将无符号字符转换为int和short

  8. 8

    将int []转换为short [],反之亦然

  9. 9

    如何将nullable int强制转换为nullable short?

  10. 10

    在C中将int转换为short

  11. 11

    使用格式说明符%d和%u将类型转换〜0转换为(unsigned int)和(unsigned short),对于short产生相同的结果,但对于int产生不同的结果

  12. 12

    程序集x86-将short int转换为int(WORD转换为DWORD)

  13. 13

    在应用按位运算符“〜”之后,从“ int”转换为“ unsigned short”

  14. 14

    自动将int转换为unsigned int

  15. 15

    C ++中unsigned int与unsigned short的区别

  16. 16

    如何在C中将int转换为short int?

  17. 17

    How to cast Int to unsigned short in Swift

  18. 18

    Convert int to 16 bit unsigned short

  19. 19

    将char [2]转换为unsigned short时出错?

  20. 20

    unsigned short int和unsigned int或unsigned short之间有什么区别?

  21. 21

    int *数组到short *数组的转换

  22. 22

    当将int强制转换为short并被截断时,如何确定新值?

  23. 23

    不一致的结果将无符号[char,short,int,long]转换为double

  24. 24

    将数字(short,int,long,float,double,bigint)转换为字节数组:Scala / Java

  25. 25

    如何将unsigned int转换为unsigned char数组

  26. 26

    gcc奇怪的转换警告(从'int'转换为'A <B> :: count_type {aka short unsigned int}'可能会改变其值)

  27. 27

    C++ 没有已知的从 'int*' 到 'uint16_t* {a ka short unsigned int*}' 的转换

  28. 28

    在C中将char转换为unsigned short

  29. 29

    使用unsigned int而不是unsigned short更改行为

热门标签

归档