diff --git a/packages/ternary/conversion.go b/packages/ternary/conversion.go
index ac65f1eacf1780d1bd06d9bb4672c0a0e2232a8e..05d7b358d5234b6fbdea06e82df244b1419967f6 100644
--- a/packages/ternary/conversion.go
+++ b/packages/ternary/conversion.go
@@ -8,6 +8,37 @@ const (
 )
 
 var (
+    TRYTES_TO_TRITS_MAP = map[rune][]int8{
+        '9': Trits{0, 0, 0},
+        'A': Trits{1, 0, 0},
+        'B': Trits{-1, 1, 0},
+        'C': Trits{0, 1, 0},
+        'D': Trits{1, 1, 0},
+        'E': Trits{-1, -1, 1},
+        'F': Trits{0, -1, 1},
+        'G': Trits{1, -1, 1},
+        'H': Trits{-1, 0, 1},
+        'I': Trits{0, 0, 1},
+        'J': Trits{1, 0, 1},
+        'K': Trits{-1, 1, 1},
+        'L': Trits{0, 1, 1},
+        'M': Trits{1, 1, 1},
+        'N': Trits{-1, -1, -1},
+        'O': Trits{0, -1, -1},
+        'P': Trits{1, -1, -1},
+        'Q': Trits{-1, 0, -1},
+        'R': Trits{0, 0, -1},
+        'S': Trits{1, 0, -1},
+        'T': Trits{-1, 1, -1},
+        'U': Trits{0, 1, -1},
+        'V': Trits{1, 1, -1},
+        'W': Trits{-1, -1, 0},
+        'X': Trits{0, -1, 0},
+        'Y': Trits{1, -1, 0},
+        'Z': Trits{-1, 0, 0},
+    }
+
+
     TRYTE_ALPHABET = []string{
         "9", "A", "B","C", "D", "E", "F", "G", "H",
         "I", "J", "K", "L", "M", "N", "O", "P", "Q",
diff --git a/packages/ternary/ternary.go b/packages/ternary/ternary.go
index 84034c5b7c678a05d19e03ea867fd220502d809b..a94517fc829a3b62fe158467e97439a300a758bd 100644
--- a/packages/ternary/ternary.go
+++ b/packages/ternary/ternary.go
@@ -21,6 +21,16 @@ func (trinary Trinary) CastToBytes() []byte {
     return *(*[]byte)(unsafe.Pointer(&reflect.SliceHeader{Data: hdr.Data, Len:  hdr.Len, Cap:  hdr.Len}))
 }
 
+func (trinary Trinary) ToTrits() Trits {
+    trits := make(Trits, len(trinary) * 3)
+    for _, char := range trinary {
+        trits = append(trits, TRYTES_TO_TRITS_MAP[char]...)
+    }
+
+    return trits
+}
+
+
 func (this Trits) ToBytes() []byte {
     tritsLength := len(this)
     bytesLength := (tritsLength + NUMBER_OF_TRITS_IN_A_BYTE - 1) / NUMBER_OF_TRITS_IN_A_BYTE