Package hexadeca implements hexadecimal encoding and decoding, for the Go programming language. This is meant to be a better alternative to Go's built-in "hex" package.
Go to file
Charles Iliya Krempeaux 71f78a098b initial commits 2023-10-27 12:05:53 -07:00
symbols initial commits 2023-10-27 12:03:16 -07:00
LICENSE initial commits 2023-10-26 11:15:51 -07:00
README.md initial commits 2023-10-27 12:05:53 -07:00
encodebyte.go initial commits 2023-10-27 11:58:14 -07:00
encodebyte_test.go initial commits 2023-10-26 17:21:23 -07:00
encodeint64.go initial commits 2023-10-27 11:58:14 -07:00
encodeint64_test.go initial commits 2023-10-27 00:58:13 -07:00
encodeuint16.go initial commits 2023-10-27 11:58:14 -07:00
encodeuint32.go initial commits 2023-10-27 11:58:14 -07:00
encodeuint64.go initial commits 2023-10-27 11:58:14 -07:00
encodeuint64_test.go initial commits 2023-10-26 21:46:23 -07:00
go.mod initial commits 2023-10-27 00:58:26 -07:00

README.md

go-hexadeca

Package hexadeca implements hexadecimal encoding and decoding, for the Go programming language. This is meant to be a better alternative to Go's built-in "hex" package.

Package hexadeca has functions for hexadecimal encoding and decoding with Go types:

  • byte (i.e., uint8),
  • uint16,
  • uint32
  • uint64
  • int64

Documention

Online documentation, which includes examples, can be found at: http://godoc.org/sourcecode.social/reiver/go-hexadeca

GoDoc

Symbols

Package hexadeca lets you pick the 16 symbols to hexadecimal encode to and hexadecimal decode from. For example —

Lower-Case:
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'.

Upper-Case:
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'.

Persian:
'۰' (zero), '۱' (one), '۲' (two), '۳' (three), '۴' (four), '۵' (five), '۶' (six), '۷' (seven), '۸' (eight) ,'۹' (nine), 'ا' (alef), 'ب ' (be), 'پ ' (pe), 'ت ' (te), 'ث ' (s̱e), 'ج' (jim).

As well as defining you own using function:

func CustomSymbol(value byte) rune {
        var table [16]rune = [16]rune{
                '𝍠', //  0
                '𝍡', //  1
                '𝍢', //  2
                '𝍣', //  3
                '𝍤', //  4
                '𝍥', //  5
                '𝍦', //  6
                '𝍧', //  7
                '𝍨', //  8
                '𝍩', //  9
                '𝍪', // 10
                '𝍫', // 11
                '𝍬', // 12
                '𝍭', // 13
                '𝍮', // 14
                '𝍯', // 15
        }

        var index int = int(value) % len(table)

        var result rune = table[index]

        return result
}

// ...

r1, r0 := hexadeca.EncodeRune(value, CustomSymbol)

hexadecimal encode byte

To hexadecimal encode a byte use any of these:

import "sourceccode.social/reiver/go-hexadeca"

// ...

// value==254 -> mostSignificant=='f', leastSignificant=='e'
mostSignificant, leastSignificant := hexadeca.EncodeByteUsingLowerCaseSymbols(value)

// ...

// value==254 -> mostSignificant=='F', leastSignificant=='E'
mostSignificant, leastSignificant := hexadeca.EncodeByteUsingUpperCaseSymbols(value)

Or:

import (
	"sourceccode.social/reiver/go-hexadeca"
	"sourceccode.social/reiver/go-hexadeca/symbols/rune"
)

// ...

// value==254 -> mostSignificant=='f', leastSignificant=='e'
mostSignificant, leastSignificant := hexadeca.EncodeByte(value, runesymbols.LowerCase)

// ...

// value==254 -> mostSignificant=='F', leastSignificant=='E'
mostSignificant, leastSignificant := hexadeca.EncodeByte(value, runesymbols.UpperCase)

hexadecimal encode uint16

To hexadecimal encode a uint16 use any of these:

import "sourceccode.social/reiver/go-hexadeca"

// ...

r3, r2, r1, r0 := hexadeca.EncodeUint16UsingLowerCaseSymbols(value)

// ...

r3, r2, r1, r0 := hexadeca.EncodeUint16UsingUpperCaseSymbols(value)

Or:

import (
	"sourceccode.social/reiver/go-hexadeca"
	"sourceccode.social/reiver/go-hexadeca/symbols/rune"
)

// ...

r3, r2, r1, r0 := hexadeca.EncodeUint16(value, runesymbols.LowerCase)

// ...

r3, r2, r1, r0 := hexadeca.EncodeUint16(value, runesymbols.UpperCase)

hexadecimal encode uint32

To hexadecimal encode a uint32 use any of these:

import "sourceccode.social/reiver/go-hexadeca"

// ...

r7, r6, r5, r4, r3, r2, r1, r0 := hexadeca.EncodeUint32UsingLowerCaseSymbols(value)

// ...

r7, r6, r5, r4, r3, r2, r1, r0 := hexadeca.EncodeUint32UsingUpperCaseSymbols(value)

Or:

import  (
	"sourceccode.social/reiver/go-hexadeca"
	"sourceccode.social/reiver/go-hexadeca/symbols/rune"
)

// ...

r7, r6, r5, r4, r3, r2, r1, r0 := hexadeca.EncodeUint32(value, runesymbols.LowerCase)

// ...

r7, r6, r5, r4, r3, r2, r1, r0 := hexadeca.EncodeUint32(value, runesymbols.UpperCase)

hexadecimal encode uint64

To hexadecimal encode a uint64 use any of these:

import "sourceccode.social/reiver/go-hexadeca"

// ...

// value==18364758544493064720 -> r15=='f', r14=='e', r13=='d', r12=='c', r11=='b', r10=='a', r9=='9', r8=='8', r7=='7', r6=='6', r5=='5', r4=='4', r3=='3', r2=='2', r1=='1', r0=='0'
r15, r14, r13, r12, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0 := hexadeca.EncodeUint64UsingLowerCaseSymbols(value)

// ...

// value==18364758544493064720 -> r15=='F', r14=='E', r13=='D', r12=='C', r11=='B', r10=='A', r9=='9', r8=='8', r7=='7', r6=='6', r5=='5', r4=='4', r3=='3', r2=='2', r1=='1', r0=='0'
r15, r14, r13, r12, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0 := hexadeca.EncodeUint64UsingUpperCaseSymbols(value)

Or:

import (
	"sourceccode.social/reiver/go-hexadeca"
	"sourceccode.social/reiver/go-hexadeca/symbols/rune"
)

// ...

// value==18364758544493064720 -> r15=='f', r14=='e', r13=='d', r12=='c', r11=='b', r10=='a', r9=='9', r8=='8', r7=='7', r6=='6', r5=='5', r4=='4', r3=='3', r2=='2', r1=='1', r0=='0'
r15, r14, r13, r12, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0 := hexadeca.EncodeUint64(value, runesymbols.LowerCase)

// ...

// value==18364758544493064720 -> r15=='F', r14=='E', r13=='D', r12=='C', r11=='B', r10=='A', r9=='9', r8=='8', r7=='7', r6=='6', r5=='5', r4=='4', r3=='3', r2=='2', r1=='1', r0=='0'
r15, r14, r13, r12, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0 := hexadeca.EncodeUint64(value, runesymbols.UpperCase)

hexadecimal encode int64

To hexadecimal encode a int64 use any of these:

import "sourceccode.social/reiver/go-hexadeca"

// ...

// value==18364758544493064720 -> r15=='f', r14=='e', r13=='d', r12=='c', r11=='b', r10=='a', r9=='9', r8=='8', r7=='7', r6=='6', r5=='5', r4=='4', r3=='3', r2=='2', r1=='1', r0=='0'
r15, r14, r13, r12, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0 := hexadeca.EncodeInt64UsingLowerCaseSymbols(value)

// ...

// value==18364758544493064720 -> r15=='F', r14=='E', r13=='D', r12=='C', r11=='B', r10=='A', r9=='9', r8=='8', r7=='7', r6=='6', r5=='5', r4=='4', r3=='3', r2=='2', r1=='1', r0=='0'
r15, r14, r13, r12, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0 := hexadeca.EncodeInt64UsingUpperCaseSymbols(value)

Or:

import (
	"sourceccode.social/reiver/go-hexadeca"
	"sourceccode.social/reiver/go-hexadeca/symbols/rune"
)

// ...

// value==18364758544493064720 -> r15=='f', r14=='e', r13=='d', r12=='c', r11=='b', r10=='a', r9=='9', r8=='8', r7=='7', r6=='6', r5=='5', r4=='4', r3=='3', r2=='2', r1=='1', r0=='0'
r15, r14, r13, r12, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0 := hexadeca.EncodeInt64(value, runesymbols.LowerCase)

// ...

// value==18364758544493064720 -> r15=='F', r14=='E', r13=='D', r12=='C', r11=='B', r10=='A', r9=='9', r8=='8', r7=='7', r6=='6', r5=='5', r4=='4', r3=='3', r2=='2', r1=='1', r0=='0'
r15, r14, r13, r12, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0 := hexadeca.EncodeInt64(value, runesymbols.UpperCase)

Import

To import package hexadeca use import code like the following:

import "sourcecode.social/reiver/go-hexadeca"

Installation

To install package hexadeca do the following:

GOPROXY=direct go get https://sourcecode.social/reiver/go-hexadeca

Author

Package hexadeca was written by Charles Iliya Krempeaux