AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.11.2009, 12:10   #1  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
num2hex
День добрый всем. Может быть заморачивался кто-то конвертацией в Аксапте вещественного числа в hex? Можно ли это как-то реализовать без извращений?
Старый 05.11.2009, 12:11   #2  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Не в том подфоруме создал вопрос, перенесите пожалуйста.

Последний раз редактировалось Gustav; 05.11.2009 в 12:51. Причина: перенес в "Программирование"
Старый 05.11.2009, 12:15   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Хмм. А нафига real в hex? В Global есть int2hex.
Посути, из интов в основном и конвертируют
Старый 05.11.2009, 12:18   #4  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
ну вот мне понадобилось из num`ов. Простой пример, число 1.2 в hex
Старый 05.11.2009, 12:41   #5  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от greench Посмотреть сообщение
ну вот мне понадобилось из num`ов. Простой пример, число 1.2 в hex
А какая задача? И с какой точностью хранить значения нужно?
Может хранить, приводя к целочисленному виду
Т.е.

1) нам нужно сохранить 1.2
2) Умножаем 1.2*10 = 12; Hex(12) = 0С -> сохраняем
3) При использовании достаем 0С, делим на 10, получаем 1.2

Здесь используется 10, если нужно хранить с точностью до 0.1
Старый 05.11.2009, 12:45   #6  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Мне так не подойдет, мне потом эти значения нужно в файл загонять. Т.е. именно 1.2 нужно представить в hex. Точность - достаточно 0.01
Старый 05.11.2009, 13:35   #7  
Russland is offline
Russland
MCTS
Аватар для Russland
MCBMSS
 
267 / 116 (4) +++++
Регистрация: 17.10.2005
Адрес: Донеччина, Україна
Хохмы ради набросал джобик конверсии дробовой части в hex
As is...
Если есть ошибки отладить можете черпая инфу из http://en.wikipedia.org/wiki/Hexadecimal
параграф Real numbers

Вы же этот дробовой hex в файле в текстовом виде собираетесь хранить?
Если ответите, что нет, я упаду со стула

X++:
static void Job54(Args _args)
{
    real    r = 1/17;

    real    rr;
    int     ir;

    Counter c;
    str     s;

    str i2h(int _i)
    {
        str _s;
        ;
        switch(_i)
        {
            case 0:_s="0";break;
            case 1:_s="1";break;
            case 2:_s="2";break;
            case 3:_s="3";break;
            case 4:_s="4";break;
            case 5:_s="5";break;
            case 6:_s="6";break;
            case 7:_s="7";break;
            case 8:_s="8";break;
            case 9:_s="9";break;
            case 10:_s="A";break;
            case 11:_s="B";break;
            case 12:_s="C";break;
            case 13:_s="D";break;
            case 14:_s="E";break;
            case 15:_s="F";break;
        }

        return _s;
    }
    ;

    c = 0;
    s= "0.";
    while (c<10)
    {
        rr = 16*r;
        ir = rr;
        r = rr-ir;

        c++;
//        info(strFmt("%1", i2h(ir)));
        s+=i2h(ir);
    }
    info(strFmt("%1", s));
}
__________________

В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню
Старый 05.11.2009, 13:38   #8  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Конечно в тексте. Падать не нужно =). Сейчас проверю.
Старый 06.11.2009, 11:10   #9  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Джоб работает не совсем корректно. Решение было найдено. Бросаем ораклу запрос:

select sys.utl_raw.cast_from_binary_double(6.5) from dual

в ответ получаем нужную нам строку.
Старый 06.11.2009, 11:11   #10  
Russland is offline
Russland
MCTS
Аватар для Russland
MCBMSS
 
267 / 116 (4) +++++
Регистрация: 17.10.2005
Адрес: Донеччина, Україна
А где он там спотыкается?
__________________

В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню
Старый 06.11.2009, 14:45   #11  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от greench Посмотреть сообщение
Джоб работает не совсем корректно. Решение было найдено. Бросаем ораклу запрос:

select sys.utl_raw.cast_from_binary_double(6.5) from dual

в ответ получаем нужную нам строку.
А на SQL Server схожий код имеется?
Старый 06.11.2009, 14:45   #12  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
суньте число в binary и потом делайте что хотите
X++:
static void Job22(Args _args)
{
    binary b = new binary(8);
    ;
    b.double(0, 1.12345);
    info(strfmt("%1", b.byte(0)));
    info(strfmt("%1", b.byte(1)));
    info(strfmt("%1", b.byte(2)));
    info(strfmt("%1", b.byte(3)));
    info(strfmt("%1", b.byte(4)));
    info(strfmt("%1", b.byte(5)));
    info(strfmt("%1", b.byte(6)));
    info(strfmt("%1", b.byte(7)));
}
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
За это сообщение автора поблагодарили: greench (1), DSPIC (2).
Старый 06.11.2009, 15:01   #13  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
точно, только нужно не забыть потому к каждому элементу применить int2hex
Старый 06.11.2009, 16:09   #14  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Вернее не так, если загонять потом в файл, то ничего делать не нужно. Если посмотреть потом в Аксапте, то int2hex.
Теги
hex, x++

 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:21.