{"id":3573,"date":"2018-01-01T06:00:14","date_gmt":"2018-01-01T04:00:14","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=3573"},"modified":"2018-02-19T08:37:39","modified_gmt":"2018-02-19T06:37:39","slug":"de-hexadecimal-a-decimal","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/de-hexadecimal-a-decimal\/","title":{"rendered":"De hexadecimal a decimal"},"content":{"rendered":"<p>El <a href=\"http:\/\/bit.ly\/2Em3aaQ\">sistema hexadecimal<\/a> es el sistema de numeraci\u00f3n posicional que tiene como base el 16.<\/p>\n<p>En principio, dado que el sistema usual de numeraci\u00f3n es de base decimal y, por ello, s\u00f3lo se dispone de diez d\u00edgitos, se adopt\u00f3 la convenci\u00f3n de usar las seis primeras letras del alfabeto latino para suplir los d\u00edgitos que nos faltan. El conjunto de s\u00edmbolos es el siguiente: {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}. En ocasiones se emplean letras min\u00fasculas en lugar de may\u00fasculas. Se debe notar que A = 10, B = 11, C = 12, D = 13, E = 14 y F = 15.<\/p>\n<p>Como en cualquier sistema de numeraci\u00f3n posicional, el valor num\u00e9rico de cada d\u00edgito es alterado dependiendo de su posici\u00f3n en la cadena de d\u00edgitos, quedando multiplicado por una cierta potencia de la base del sistema, que en este caso es 16. Por ejemplo, el valor decimal del n\u00famero hexadecimal 3E0A es<\/p>\n<pre lang=\"text\">\n     3\u00d716^3 + E\u00d716^2 + 0\u00d716^1 + A\u00d716^0\n   = 3\u00d74096 + 14\u00d7256 + 0\u00d716   + 10\u00d71\n   = 15882\n<\/pre>\n<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   hexAdec :: String -> Int\n<\/pre>\n<p>tal que (hexAdec cs) es el valor decimal del n\u00famero hexadecimal representado meiante la cadena cs. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   hexAdec \"3E0A\"   == 15882\n   hexAdec \"ABCDEF\" == 11259375\n   hexAdec \"FEDCBA\" == 16702650\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.Char (digitToInt)\nimport Numeric(readHex)\nimport Data.List (foldl')\n\n-- 1\u00aa soluci\u00f3n\nhexAdec1 :: String -> Int\nhexAdec1 s =\n  sum (zipWith (*) (map digitToInt (reverse s)) (iterate (*16) 1))\n\n-- 2\u00aa soluci\u00f3n\nhexAdec2 :: String -> Int\nhexAdec2 = foldl' (\\acc x -> acc * 16 + digitToInt x) 0\n\n-- 3\u00aa soluci\u00f3n\nhexAdec3 :: String -> Int\nhexAdec3 = read . (\"0x\" ++)\n\n-- 4\u00aa soluci\u00f3n\nhexAdec4 :: String -> Int\nhexAdec4 = fst . head . readHex\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>El sistema hexadecimal es el sistema de numeraci\u00f3n posicional que tiene como base el 16. En principio, dado que el sistema usual de numeraci\u00f3n es de base decimal y, por ello, s\u00f3lo se dispone de diez d\u00edgitos, se adopt\u00f3 la convenci\u00f3n de usar las seis primeras letras del alfabeto latino para suplir los d\u00edgitos que&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"footnotes":"","_jetpack_memberships_contains_paid_content":false},"categories":[5],"tags":[248,185,80,71,50,10,11,95,435,32,40,76],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3573"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/comments?post=3573"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3573\/revisions"}],"predecessor-version":[{"id":3792,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3573\/revisions\/3792"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=3573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=3573"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=3573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}