Russian Qt Forum

Qt => Общие вопросы => Тема начата: Bar90 от Август 31, 2012, 12:52



Название: Бинарная строка
Отправлено: Bar90 от Август 31, 2012, 12:52
Здравствуйте. Мне нужно из Hex составитьстроку то есть из FF FF FF мне бы хотелось что бы и в строке было тоже самое.
Что получается у меня :
Код:
  QString s = QString(QByteArray::fromHex("FFFFFFFFFFFFFFFF"));
    qDebug() << "String = " << s;
    qDebug() << "HEX =" << s.toLocal8Bit().toHex();
вывод в дебаге
String =  "????????"
HEX = "3f3f3f3f3f3f3f3f"
а мне нужно что бы в дебаге вывелось
HEX = "FFFFFFFFFFFFFFFF"

Почему в дебаге выводятся еще какието тройки ?


Название: Re: Бинарная строка
Отправлено: mutineer от Август 31, 2012, 12:55
Код:
QString s = "FFFFFFFF";
qDebug() << s;

чем не подходит?


Название: Re: Бинарная строка
Отправлено: Bar90 от Август 31, 2012, 13:09
Код:
QString s = "FFFFFFFF";
qDebug() << s;

чем не подходит?
Тем что хексовое значение строки будет не FFFFFFFF


Название: Re: Бинарная строка
Отправлено: gil9red от Август 31, 2012, 13:16
Код:
   
    QByteArray byteArr = "ff04d3";
    QString str = QString(byteArr);
    QMessageBox::information(0, "", str);

вывелось "ff04d3"


Название: Re: Бинарная строка
Отправлено: Bar90 от Август 31, 2012, 13:26
А у меня HEX = "666630346433"


Название: Re: Бинарная строка
Отправлено: Bar90 от Август 31, 2012, 13:32
Мне нужно что бы внутренее представление строки в памяти было таким каким я укажу в hex виде.


Название: Re: Бинарная строка
Отправлено: gil9red от Август 31, 2012, 13:41
Код:
    
    QByteArray byteArr = "ff04d3";
    QString s = QString(byteArr);
    qDebug() << s.toLocal8Bit();
    qDebug() << s.toAscii();

выводит "ff04d3"


Название: Re: Бинарная строка
Отправлено: mutineer от Август 31, 2012, 13:43
Код:
QString s = QByteArray::fromHex("517420697320677265617421FFFF");
qDebug() << s;
qDebug() << s.toAscii().toHex();


Название: Re: Бинарная строка
Отправлено: Bar90 от Август 31, 2012, 13:52
Код:
QString s = QByteArray::fromHex("517420697320677265617421FFFF");
qDebug() << s;
qDebug() << s.toAscii().toHex();
Код:
 QString s = QByteArray::fromHex("FFFFFFFFFFFFFFFF");
    qDebug() << s;
    qDebug() << s.toAscii().toHex();
выводит
"????????"
"efbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbd"


Название: Re: Бинарная строка
Отправлено: mutineer от Август 31, 2012, 13:57
а с приведенным мной значением что выводит?


Название: Re: Бинарная строка
Отправлено: gil9red от Август 31, 2012, 14:05
а с приведенным мной значением что выводит?
скопировал я этот код:
Код:
    QString s = QByteArray::fromHex("517420697320677265617421FFFF");
    qDebug() << s;
    qDebug() << s.toAscii().toHex();

вывелось у меня:
"Qt is great!yy"
"517420697320677265617421ffff"


Название: Re: Бинарная строка
Отправлено: Bar90 от Август 31, 2012, 14:06
а с приведенным мной значением что выводит?
скопировал я этот код:
Код:
    QString s = QByteArray::fromHex("517420697320677265617421FFFF");
    qDebug() << s;
    qDebug() << s.toAscii().toHex();

вывелось у меня:
"Qt is great!yy"
"517420697320677265617421ffff"
а с приведенным мной значением что выводит?
С приведенным вами 517420697320677265617421fbfbfbfb


Название: Re: Бинарная строка
Отправлено: mutineer от Август 31, 2012, 14:09
а текст вывелся или вопросы?
Что за ось у тебя?


Название: Re: Бинарная строка
Отправлено: andrew.k от Август 31, 2012, 14:12
Мне нужно что бы внутренее представление строки в памяти было таким каким я укажу в hex виде.
Для этих целей тебе подходит:
Цитировать
QByteArray QByteArray::fromHex ( const QByteArray & hexEncoded ) [static]

Returns a decoded copy of the hex encoded array hexEncoded. Input is not checked for validity; invalid characters in the input are skipped, enabling the decoding process to continue with subsequent characters.

For example:
Код
C++ (Qt)
QByteArray text = QByteArray::fromHex("517420697320677265617421");
text.data();   // returns "Qt is great!"

Но тебе что-то не нравится. Что ты хочешь получить, не ясно.


Название: Re: Бинарная строка
Отправлено: Bar90 от Август 31, 2012, 15:05
  QString s = "яяяяяяяяяяяяяяяя";
    qDebug() << "HEX =" << s.toLocal8Bit().toHex();
выводит
HEX = "ffffffffffffffffffffffffffffffff"


Название: Re: Бинарная строка
Отправлено: torwig от Август 31, 2012, 15:49
qlonglong mmm = 0xFFFFFF;
qDebug()<< "test: " << QString::number(mmm, 16);

В дебаге:
test:  "ffffff"

Или напиши, где ты хочешь использовать и для чего, ребята помогут советом)
Буквы "я" нету в hex'е, или не очень понятно чего ты добиваешься.