13.02.2003, 14:03 | #1 |
----------------
|
int2hex
Помнится, нужен мне был 16-ричный код числа, а стандартная ф-ция не понимала отрицательные числа.. пришлось править
PHP код:
|
|
29.12.2016, 13:43 | #2 |
Участник
|
Можно немного упростить этот метод
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 |
Участник
|
И ускорить на порядок
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);
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
29.12.2016, 14:48 | #4 |
Участник
|
можно еще упростить, если использовать контейнер или массив.
не факт, что это упрощение сделает код быстрее. и что-то не так с условием - если значение iValue > 0xF, то оно точно не равно 0 X++: while (iValue > 0xF || iValue != 0) |
|
29.12.2016, 14:50 | #5 |
Участник
|
|
|
29.12.2016, 15:00 | #6 |
Участник
|
|
|