From 4195c1509243d653fa300f942588518097811ef4 Mon Sep 17 00:00:00 2001 From: ninjanomnom Date: Thu, 7 Dec 2017 14:31:39 -0500 Subject: [PATCH 1/3] step backwards version of hex2num --- code/__HELPERS/type2type.dm | 43 ++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 56be39a0a81..72a0d18f73e 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -14,30 +14,25 @@ //breaks when hittin invalid characters thereafter /proc/hex2num(hex) . = 0 - if(istext(hex)) - var/negative = 0 - var/len = length(hex) - for(var/i=1, i<=len, i++) - var/num = text2ascii(hex,i) - switch(num) - if(48 to 57) - num -= 48 //0-9 - if(97 to 102) - num -= 87 //a-f - if(65 to 70) - num -= 55 //A-F - if(45) - negative = 1//- - else - if(num) - break - else - continue - . *= 16 - . += num - if(negative) - . *= -1 - return . + if(!istext(hex)) + return + + var/place = 0 + for(var/i in length(hex) to 1 step -1) + var/num = text2ascii(hex, i) + switch(num) + if(48 to 57) + num -= 48 //0-9 + if(97 to 102) + num -= 87 //a-f + if(65 to 70) + num -= 55 //A-F + if(45) + return . * -1 // - + else + CRASH("Malformed hex number") + + . += num * (16 ** place++) //Returns the hex value of a decimal number //len == length of returned string From d124545512dc78e724c00f99a1492fa69af407cf Mon Sep 17 00:00:00 2001 From: ninjanomnom Date: Thu, 7 Dec 2017 22:47:12 -0500 Subject: [PATCH 2/3] removes needless sanitation --- code/__HELPERS/type2type.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 72a0d18f73e..93c3c246a38 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -14,9 +14,6 @@ //breaks when hittin invalid characters thereafter /proc/hex2num(hex) . = 0 - if(!istext(hex)) - return - var/place = 0 for(var/i in length(hex) to 1 step -1) var/num = text2ascii(hex, i) From e3572e08731320391a7e6afa8213b7dc1751cbf0 Mon Sep 17 00:00:00 2001 From: ninjanomnom Date: Fri, 8 Dec 2017 02:22:32 -0500 Subject: [PATCH 3/3] keep track of exponent value instead of recalculating --- code/__HELPERS/type2type.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 93c3c246a38..2eeee95d090 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -14,7 +14,7 @@ //breaks when hittin invalid characters thereafter /proc/hex2num(hex) . = 0 - var/place = 0 + var/place = 1 for(var/i in length(hex) to 1 step -1) var/num = text2ascii(hex, i) switch(num) @@ -29,7 +29,8 @@ else CRASH("Malformed hex number") - . += num * (16 ** place++) + . += num * place + place *= 16 //Returns the hex value of a decimal number //len == length of returned string