Преобразовать шестнадцатеричную строку в целое число - PullRequest
0 голосов
/ 01 июля 2018

Все, что я хочу, это предикат вида

parse_hex(H, N).

, который преобразует между шестнадцатеричной строкой и целыми числами пролога. Я мог бы реализовать это сам, очевидно, но мне интересно, есть ли встроенный. Я не смог найти его, но, похоже, должен быть способ сделать это.

1 Ответ

0 голосов
/ 01 июля 2018

Учитывая, что стандартный Пролог поддерживает шестнадцатеричные числа, если под строкой вы подразумеваете атом Пролога:

parse_hex(H, N) :-
    atom_concat('0x', H, HexaAtom),
    atom_codes(HexaAtom, HexaCodes),
    number_codes(N, HexaCodes).

Если у вас действительно есть строка вместо атома, обратитесь к документации Prolog по ее преобразованию в атом. Например. SWI-Prolog предоставляет atom_string/2 двунаправленный встроенный предикат.

Пример звонка:

?- parse_hex('ff', N).
N = 255.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...