util/hex.lua
author Matthew Wild <mwild1@gmail.com>
Fri, 23 Feb 2018 15:30:00 +0000
changeset 8531 67311cda0625
parent 6805 442019e955dc
child 12359 a0ff5c438e9d
permissions -rw-r--r--
net.server_select: Better detection of errors for outgoing connections On connection failure, a socket is marked readable and writable. So to detect initial connection failures (connection refused, etc.) we now watch for sockets becoming readable during initial connection, and also read from readable sockets before writing to writable sockets. This should fix 'onconnect' being called for outgoing connections that actually failed.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6375
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     1
local s_char = string.char;
6548
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
     2
local s_format = string.format;
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
     3
local s_gsub = string.gsub;
6805
442019e955dc util.hex: Normalize hex to lowercase and discard non-hex input
Kim Alvefur <zash@zash.se>
parents: 6548
diff changeset
     4
local s_lower = string.lower;
6548
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
     5
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
     6
local char_to_hex = {};
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
     7
local hex_to_char = {};
6375
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     8
6548
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
     9
do
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
    10
	local char, hex;
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
    11
	for i = 0,255 do
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
    12
		char, hex = s_char(i), s_format("%02x", i);
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
    13
		char_to_hex[char] = hex;
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
    14
		hex_to_char[hex] = char;
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
    15
	end
6375
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    16
end
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    17
6384
3f4809d01783 util.hex: Use locals!
Kim Alvefur <zash@zash.se>
parents: 6375
diff changeset
    18
local function to(s)
6548
ec566d7cd518 util.hex: Pedantic optimization, 1 table lookup per byte instead of 3 function calls makes it go faster
Kim Alvefur <zash@zash.se>
parents: 6384
diff changeset
    19
	return (s_gsub(s, ".", char_to_hex));
6375
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    20
end
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    21
6384
3f4809d01783 util.hex: Use locals!
Kim Alvefur <zash@zash.se>
parents: 6375
diff changeset
    22
local function from(s)
6805
442019e955dc util.hex: Normalize hex to lowercase and discard non-hex input
Kim Alvefur <zash@zash.se>
parents: 6548
diff changeset
    23
	return (s_gsub(s_lower(s), "%X*(%x%x)%X*", hex_to_char));
6375
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    24
end
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    25
76d8907d5301 util.hex: Small util lib for converting to/from hex strings
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    26
return { to = to, from = from }