From ae48e14876959ce08e3d71068b0d79c50ca1f052 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sat, 9 Dec 2017 16:05:22 -0500 Subject: [PATCH] Merge pull request #33371 from ninjanomnom/walk-backwards-into-hell Step backwards version of hex2num --- code/__HELPERS/type2type.dm | 41 +++++++++++++++---------------------- 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 64ea8de756..bae773b27e 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -14,30 +14,23 @@ //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 . + var/place = 1 + 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 * place + place *= 16 //Returns the hex value of a decimal number //len == length of returned string