Aller au contenu

Conversion HEX to DEC


Messages recommandés

Posté(e)

Bonjour,

je cherche une routine/biblio pour convertir une chaine Hexadecimale en entier base 10

pour utiliser cette valeur dans un champ. Pour integrer le tout dans une de mes macros

 

 

Command: (setq aa (entsel))

 

Select object: ( (1082.61 197.801 0.0))

 

Command: (car aa)

 

%<\AcObjProp.16.2 Object(%<\_ObjId 2112553368>%).Area \f "%lu2%ps[,m²]%ct8[0.0001]">%

 

Dans le champ la valeur 2112553368 est la conversion de l'hex 7deb0198.

 

D'avance merci.

 

Posté(e)

Je ne sais plus où j'ai pu glané ces lignes de code, ni qui est l'auteur.. :(

 

;;;-----------------------------------------------------------------;;;
;;; Convertion Hexadecimal ---> Decimal
;;;
;;;---------------------------------------------------------- -------

(defun hexdec (nb / r i s) 
(if (= (type nb) 'INT)
(setq nb (itoa nb))
)
(setq r 0 i 0)
(while (and (= (type nb) 'STR) (< i (strlen nb)))
(setq i (1+ i))
(setq s (strcase (substr nb i 1 )))
(setq r (+ (lsh r 4) (- (ascii s)
(if (<= s "9")
48
55
)))
)
)
)

(hexdec "7deb0198") -> 2112553368

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Un grand merci pour l'info.

 

 

voici ma routine.

 

Elle tourne sous Autocad2008 US.

 

Elle me permet de cliquer sur une entité et d'afficher la surface.

L'avantage c'est que la routine insère un champ.

Si la surface change, le champ s'adapte.

 

Elle est telle-quelle.

Les variables importantes:

MonUnite : m² je travaille en cm, mais les surfaces sont en m²

MaReduction : 0.0001 pour passer du cm² au m²

Prefixe : Sf: Selon votre bon plaisir.

 

Le champ est justifié 'Centre"

Il utilise le style de texte actif.

 

 
;;;-----------------------------------------------------------------;;;
;;; Convertion Hexadecimal ---> Decimal
;;;
;;;---------------------------------------------------------- -------

(DEFUN hexdec (nb / r i s)
 (IF (= (TYPE nb) 'INT)
   (SETQ nb (ITOA nb))
 ) ;_ Fin de if
 (SETQ	r 0
i 0
 ) ;_ Fin de setq
 (WHILE (AND (= (TYPE nb) 'STR) (< i (STRLEN nb)))
   (SETQ i (1+ i))
   (SETQ s (STRCASE (SUBSTR nb i 1)))
   (SETQ r (+ (LSH r 4)
       (- (ASCII s)
	  (IF (<= s "9")
	    48
	    55
	  ) ;_ Fin de if
       ) ;_ Fin de -
    ) ;_ Fin de +
   ) ;_ Fin de setq
 ) ;_ Fin de while
) ;_ Fin de defun



(DEFUN c:S2F
     (/	       Part1	Part2	 Part3	  IdObject pp
      aa       zz	mm	 MonUnite MaReduction
      Prefixe
     )
;;;  (vl-load-com)
 (SETVAR "cmdecho" 0) ;desactive l'affichage des opérations
 (SETQ MonUnite "m²")
 (SETQ MaReduction "0.0001")
 (SETQ Prefixe "Sf: ")
 (SETQ Part1 "%<\\AcObjProp.16.2 Object(%<\\_ObjId ")
 (SETQ	Part3 (STRCAT ">%).Area \\f \"%lu2%ps[,"
	      MonUnite
	      "]%ct8["
	      MaReduction
	      "]\">%"
	     ) ;_ Fin de STRCAT
;_ Fin de strcat
 ) ;_ Fin de SETQ
 (SETQ
   aa (ENTSEL
 "\nSelectionner votre entité (Polyligne - Cercle - Hachures ...) "
      ) ;_ Fin de entsel
 ) ;_ Fin de setq
 (SETQ pp (GETPOINT "\nPosition du champ: "))
;;;  (princ aa)
;;;  (setq aa (car aa))

 (SETQ zz (VL-PRINC-TO-STRING aa))
 (SETQ mm (SUBSTR zz 16 8))
 (PRINC mm)
 (PRINC)
 (SETQ Part2 (RTOS (hexdec mm) 2 0))
 (PRINC "\n")
 (SETQ IdObject (STRCAT Prefixe part1 part2 part3))
 (PRINC IdObject)
 (PRINC "\n")

 (PRINC)
 (COMMAND "_text" "_j" "_c" pp "0" IdObject)
 (SETVAR "cmdecho" 1) ;reactive l'affichage des opérations
 (PRINC)

) ;_ Fin de defun
;|«Visual LISP© Format Options»
(72 2 3 2 T "Fin de " 75 9 2 0 0 T T nil T)
;*** DO NOT add text below the comment! ***|;

 

[Edité le 19/10/2007 par CoolMan]

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité