powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Hex число в строку
6 сообщений из 6, страница 1 из 1
Hex число в строку
    #32997956
Фотография ИвановНН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Вопрос такой:
как получить шестнадцатиричное представление числа типа Long,
т.е. у меня число 67701220 (long) мне нужна строка "40909E4" ?
67701220(decimal) = 40909E4(hexadecimal)
PB 9.0.1.7275
Заранее благодарен.
...
Рейтинг: 0 / 0
Hex число в строку
    #32998030
Фотография AIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите
/topic/158227&hl=
...
Рейтинг: 0 / 0
Hex число в строку
    #32998180
Фотография ИвановНН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
Что-то я пропустил этот топик хотя находил его.
...
Рейтинг: 0 / 0
Hex число в строку
    #32999494
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функция переводит число в любую другую систему (до тридцатишестиричной)


global type f_dec2numsys from function_object
end type

forward prototypes
global function string f_dec2numsys (long in_num, integer out_digits, integer numbersystem, string uplower)
end prototypes

global function string f_dec2numsys (long in_num, integer out_digits, integer numbersystem, string uplower);//FUNCTION f_Dec2NumSys
// ( In_Num in number /* ????? ?? ????????? 10 */
// , Out_Digits in number /* =< 30 - ?????????? ???????? ? ???. ????? */
// , NumberSystem in number /* =< 36 - ??????? ?????????, ? ??????? ???? ????????????? ????? In_Num */
// , UpLower in varchar2 /* U[pper] ??? L[ower] - ???????, ???????? ??????. Default - 'L' */
// ) return char /* ???: ????? ? ??????? ????????? ?? ????????? NumberSystem. */
// /* or null if input parameter ERROR */

string sCodesUpper = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' ;
string sNumber_str = '' ;
long nTrancnum
integer nNdigits
integer nNS
integer i

nTrancnum = In_Num ;
nNdigits = Out_Digits ;
nNS = NumberSystem ;
if ( NumberSystem > 36 ) or ( NumberSystem < 1 ) then
return ''
end if;
if ( Out_Digits > 30 ) then
nNdigits = 30
end if;
for i = 1 TO nNdigits
sNumber_str = Mid(sCodesUpper, MOD(Mod(nTrancnum,nNS),nNS)+1, 1) + sNumber_str
nTrancnum = Truncate( nTrancnum /nNS,0 ) ;
next
if Upper(Mid(UpLower,1,1)) = 'L' then
sNumber_str = Upper(sNumber_str) ;
end if;
return sNumber_str ;
end function
...
Рейтинг: 0 / 0
Hex число в строку
    #33000332
Фотография ИвановНН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привожу свой вариант функции перевода шестнадцатиричного числа в строку
(правда по сравнению с предыдущим примером выглядит он достаточно бледно)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public function string of_numbertohexstring (readonly longlong all_number);String ls_hexstring
LongLong lll_first, lll_second
Char lc_symbols[ 0  To  15 ] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}

If all_number <  0  Then Return '--'
If all_number <=  255  Then
	lll_first = all_number /  16 
	lll_second = Mod(all_number,  16 )
	
	ls_hexstring = lc_symbols[lll_first] + lc_symbols[lll_second]
Else
	ls_hexstring = of_numbertohexstring(all_number /  256 ) + of_numbertohexstring(Mod(all_number,  256 ))
End If

Return ls_hexstring
end function
...
Рейтинг: 0 / 0
Hex число в строку
    #33280769
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИвановНН вариант функции перевода шестнадцатиричного числа в строку
Тогда обратная функция, перевода из шестнадцатеричной строки в число.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public function long uf_hex_to_num (string as_hex);
long ll_ret
long ll_char
long ll_symbol
char lc_symbols[ 0  To  15 ] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}

FOR ll_char =  0  TO len (as_hex) -  1 
    FOR ll_symbol =  0  TO  15 
        IF lc_symbols[ll_symbol]  = Mid (as_hex, len (as_hex) - ll_char,  1 ) THEN
            ll_ret  = (ll_symbol *  16 ^ll_char) + ll_ret
            Exit
        END IF
    NEXT
NEXT

Return ll_ret
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Hex число в строку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]