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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.02.2003, 14:03   #1  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,726 / 839 (31) +++++++
Регистрация: 15.01.2002
Адрес: Москва
int2hex
Помнится, нужен мне был 16-ричный код числа, а стандартная ф-ция не понимала отрицательные числа.. пришлось править
PHP код:
static str 12 int2Hex(int i,int digits 0)
{
    
str 16 h "0123456789ABCDEF";
    
str 12 res "";
    
int d;
    
boolean sig true;
    ;

    if(
0)
    {
        
sig false;
        
0x7FFFFFFF;
        
digits 8;
    }

    while (
|| (! sig && strLen(res) < 8))
    {
        
i mod 16;
        
res subStr(h,d+1,1) + res;
        
16;
        if((! 
sig) && (strLen(res) < 8) && (16))
            
0x8;
    }

    while ((
digits 0) && (strLen(res) < digits))
        
res  '0'+res;

    return 
res;

Старый 29.12.2016, 13:43   #2  
demianimp is offline
demianimp
Участник
 
127 / 63 (3) ++++
Регистрация: 10.10.2013
Можно немного упростить этот метод

X++:
#DEFINE.HEXDIGITS('0123456789ABCDEF')
static str 12 int2Hex(int iValue, int digits = 0 )
{
    str 12  result = '';
    ;
    if (iValue < 0)
    {
        digits = 8;
    }
    while (iValue != 0)
    {
        result = subStr(#HEXDIGITS, iValue & 0xF + 1, 1) + result;
        
        iValue = iValue >> 4;
        
        if (iValue == -1 && strLen(result) == digits)
        {
            break;
        }
    }
    
    result = strRep('0', digits - strLen(result)) + result;
    
    return result;
}

Последний раз редактировалось demianimp; 29.12.2016 в 15:00. Причина: лишнее условие iValue > 0xF
За это сообщение автора поблагодарили: mazzy (2).
Старый 29.12.2016, 14:44   #3  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
503 / 279 (11) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
И ускорить на порядок

X++:
// Store integer 182
int intValue = 182;
// Convert integer 182 as a hex in a string variable
string hexValue = intValue.ToString("X");
// Convert the hex string back to the number
int intAgain = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);
http://stackoverflow.com/questions/1...and-back-again
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Старый 29.12.2016, 14:48   #4  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,759 / 3627 (178) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
можно еще упростить, если использовать контейнер или массив.
не факт, что это упрощение сделает код быстрее.

и что-то не так с условием - если значение iValue > 0xF, то оно точно не равно 0
X++:
    while (iValue > 0xF || iValue != 0)
Старый 29.12.2016, 14:50   #5  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,759 / 3627 (178) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от Alex_KD Посмотреть сообщение
string hexValue = intValue.ToString("X");
мы все еще про X++? )
Старый 29.12.2016, 15:00   #6  
demianimp is offline
demianimp
Участник
 
127 / 63 (3) ++++
Регистрация: 10.10.2013
Цитата:
Сообщение от mazzy Посмотреть сообщение
...
и что-то не так с условием - если значение iValue > 0xF, то оно точно не равно 0
X++:
    while (iValue > 0xF || iValue != 0)
Согласен, здесь лишнее условие iValue > 0xF.
Теги
int2hex

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Прочитать сформированный GUID Владимир Максимов DAX: Программирование 2 24.09.2007 11:55
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:55.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.