【发布时间】:2018-08-15 02:57:23
【问题描述】:
这已经困扰我好几天了,我真的不知道要麻烦你们。
我在Qt 中有一个输入,可以从用户输入中获取任何数字。
用户输入数字后,我得到数字并转换为十六进制(base 16),如果十六进制大于1字节,我将其拆分为1字节大小。我已经完成了所有的转换和拆分。
现在我的问题是,在我转换和拆分之后,十六进制停留在QString的数据类型中,但是为了在QBtyeArray中发送,我需要转换回int。
你们能告诉我有什么方便的方法可以将 QString 转换回 int 吗?我尝试了很多方法,但是所有的转换都给了我以 10 为底的值,我希望该值以 16 为底,但在 int 中。
示例:用户在 lineEdit 中输入 10800(以 10 为底),我从 lineEdit 中检索 10800,然后将其转换为以 16 为底,因此 10800 的十六进制为 2A30 ,在我进行转换后,值2A30 在 string 中,我可以知道如何将类型转换为 int 但值仍保持为 2A30 但不会转换回 10800(基数 10)。
我得到的最接近的答案是通过这种方法
unsigned int value = QString("0x2A").toUInt(&ok, 16);
int abcde = sprintf(abc, "%x", value);
qDebug()<<QString::number(value);
QByteArray test_a = abc;
但它要么返回我 QByteArray 或 char,我希望它在 int 中,因为我需要指定我在这样的 writeDatagram() 函数中发送的每个字节。
QByteArray datagram(4, '\x000');
datagram[0] = 0x02;
datagram[1] = 0x10;
datagram[2] = 0x00;
datagram[3] = 0x00;
如果我的问题不够清楚,请告诉我。我正在使用Qt 5.2.1
谢谢!!!
【问题讨论】:
-
您的问题假定有解决方案,但没有说明您要解决的问题。请在开头添加一个段落,提供至少 2 或 3 个寻求 输入 的示例到转换(即用户输入了什么字符串),以及您期望的 输出 (即
QByteArray的内容)。 -
@KubaOber 我已经添加了一个新示例,用户期望的输入是 int in base 10 ,之后我需要转换为 base 16 ,但是在我将类型转换为 QString 之后,所以我想将其转换回 int 但值保持我转换的值。明白了吗 ?如果没有,请再告诉我一次。我会尽量解释得更清楚。
-
不清楚您要的是什么。当存储在 int 中时,10800 和 0x2a30 是相同的数字。十进制和十六进制是显示相同值的不同方式。
-
对不起,我知道是相同的值,但是当我通过 QByteArray 发送时,byteArray 只接受 int ,所以我需要将数据类型从 String 转换为 Integer .. 我得到了指定什么我需要在下面发送数据报。我需要指定每个字节要发送什么。所以我必须拆分并将其转换为 int 并放入 datagram[] 字节数组中。
-
请准确显示字节数组中的字节数!!!!。我们猜测您想要的字节是
0x2a和0x30,但是按照什么顺序,我们猜对了吗?您正在为转换编写规范:所以编写规范。规范必须提供一些示例。输入是QString,输出是QByteArray。显示一些对{string, array}以展示您认为正确的输入-输出对。问题中的大部分文字都是不相关的。例如,您在数据报中显示\x02\x10\x00\x00:为什么?!使用有助于您的规范的示例!