32 lines
703 B
Scala
32 lines
703 B
Scala
package gs.blob.v0
|
|
|
|
import java.util.Base64
|
|
|
|
opaque type Blob = Array[Byte]
|
|
|
|
object Blob:
|
|
|
|
private val Hex: String = "0123456789abcdef";
|
|
|
|
def apply(data: Array[Byte]): Blob = data
|
|
|
|
given CanEqual[Blob, Blob] = CanEqual.derived
|
|
|
|
extension (blob: Blob)
|
|
def toByteArray(): Array[Byte] = blob
|
|
|
|
def toBase64(): String = Base64.getEncoder().encodeToString(blob)
|
|
|
|
// TODO: Hex library
|
|
def toHex(): String =
|
|
var index = 0
|
|
val ch: Array[Char] = new Array(blob.length * 2)
|
|
blob.foreach { byte =>
|
|
ch(index) = Hex.charAt((byte & 0xf0) >> 4)
|
|
ch(index + 1) = Hex.charAt(byte & 0x0f)
|
|
index = index + 2
|
|
}
|
|
|
|
new String(ch)
|
|
|
|
end Blob
|