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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.02.2003, 14:03   #1  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
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
Участник
 
202 / 104 (4) +++++
Регистрация: 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
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 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
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
можно еще упростить, если использовать контейнер или массив.
не факт, что это упрощение сделает код быстрее.

и что-то не так с условием - если значение iValue > 0xF, то оно точно не равно 0
X++:
    while (iValue > 0xF || iValue != 0)
Старый 29.12.2016, 14:50   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Alex_KD Посмотреть сообщение
string hexValue = intValue.ToString("X");
мы все еще про X++? )
Старый 29.12.2016, 15:00   #6  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 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, время: 08:10.