From bd75e7268a8f5532f8348fcd82552ca8d38e7679 Mon Sep 17 00:00:00 2001 From: rsiddharth Date: Sat, 29 Aug 2020 13:28:16 -0400 Subject: enc: fromHexChar -> HexCharToDec * enc/b64.go (fromHexChar): Move and rename this function to... * enc/hex.go (HexCharToDec): ...this. --- enc/b64.go | 18 +++--------------- enc/hex.go | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 15 deletions(-) create mode 100644 enc/hex.go diff --git a/enc/b64.go b/enc/b64.go index 1e49b58..4c251a2 100644 --- a/enc/b64.go +++ b/enc/b64.go @@ -10,9 +10,9 @@ func HexToBase64(hex string) string { b64 := "" for i := 0; i <= len(hb)-3; i = i + 3 { - a := (fromHexChar(hb[i])<<8 | - fromHexChar(hb[i+1])<<4 | - fromHexChar(hb[i+2])) + a := (HexCharToDec(hb[i])<<8 | + HexCharToDec(hb[i+1])<<4 | + HexCharToDec(hb[i+2])) b64 += encode(a >> 6) b64 += encode(a & 0b111111) } @@ -22,15 +22,3 @@ func HexToBase64(hex string) string { func encode(b uint16) string { return string(b64_table[b]) } - -// Adapted from -// https://go.googlesource.com/go/+/refs/tags/go1.15/src/encoding/hex/hex.go#83 -func fromHexChar(c byte) uint16 { - switch { - case '0' <= c && c <= '9': - return uint16(c - '0') - case 'a' <= c && c <= 'f': - return uint16(c - 'a' + 10) - } - return 0 -} diff --git a/enc/hex.go b/enc/hex.go new file mode 100644 index 0000000..0d19538 --- /dev/null +++ b/enc/hex.go @@ -0,0 +1,16 @@ +// Copyright © 2020 rsiddharth +// SPDX-License-Identifier: ISC + +package enc + +// Adapted from +// https://go.googlesource.com/go/+/refs/tags/go1.15/src/encoding/hex/hex.go#83 +func HexCharToDec(c byte) uint16 { + switch { + case '0' <= c && c <= '9': + return uint16(c - '0') + case 'a' <= c && c <= 'f': + return uint16(c - 'a' + 10) + } + return 0 +} -- cgit v1.2.3