Max*_*wer 5 scala protocol-buffers
在Scala中有一种巧妙的方法可以将十六进制编码String转换为protobuf ByteString(并再次返回)吗?
您可以使用(没有其他依赖项)DatatypeConverter:
import com.google.protobuf.ByteString
import javax.xml.bind.DatatypeConverter
val hexString: String = "87C2D268483583714CD5"
Run Code Online (Sandbox Code Playgroud)
val byteString: ByteString = ByteString.copyFrom(
DatatypeConverter.parseHexBinary(hexString)
)
Run Code Online (Sandbox Code Playgroud)
val originalString = DatatypeConverter.printHexBinary(byteString.toByteArray)
Run Code Online (Sandbox Code Playgroud)
您可以使用java.math.BigInteger解析 a String,获取Array[Byte]并从那里将其转换为 a ByteString。这是第一步:
import java.math.BigInteger
val s = "f263575e7b00a977a8e9a37e08b9c215feb9bfb2f992b2b8f11e"
val bs = new BigInteger(s, 16).toByteArray
Run Code Online (Sandbox Code Playgroud)
现在的内容bs是:
Array(0, -14, 99, 87, 94, 123, 0, -87, 119, -88, -23, -93, 126, 8, -71, -62, 21, -2, -71, -65, -78, -7, -110, -78, -72, -15, 30)
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用(例如)方法(此处为copyFromJavaDoc )将其转换为.ByteString
| 归档时间: |
|
| 查看次数: |
2391 次 |
| 最近记录: |