[英]How to convert libGDX's Texture to byte array and back again in Java
[英]How to go from enum tp byte array and back again?
我有一个枚举
public enum Test {
VALUE, NAME;
}
我将其转换为字节数组
byte[] array = Test.VALUE.toString().getBytes(Charsets.UTF_8)
我如何将其转换回枚举?
Test.valueOf(array.toString())
不起作用。
array.toString
的原因是toString
返回数组的描述,而不是使用UTF-8编码使用数组中的字节构造的字符串。 toString
只会返回类似[B@60e53b93
,这对人类几乎没有任何意义。
要将字节数组转换为字符串,请使用字符串的构造函数,该构造函数采用字节数组和Charset
。 这是整个代码:
// converting to byte array
Test t = Test.VALUE;
byte[] bytes = t.toString().getBytes(StandardCharsets.UTF_8);
// converting back to Test
String str = new String(bytes, StandardCharsets.UTF_8);
Test newT = Test.valueOf(str);
如果您从逻辑上考虑, toString
可能无法满足您的期望。 这是因为要将字节数组转换为字符串,需要指定编码! 您显然在调用toString
时没有传递Charset
对象,那么计算机到底将如何知道您想要的字符集呢?
首先必须使用构造函数将数组转换回适当的String
。 array.toString()
不会按照您的想法做,只会返回乱码。
byte[] array = Test.VALUE.toString().getBytes(Charsets.UTF_8);
String valueString = new String(array, Charsets.UTF_8);
Test value = Test.valueOf(valueString);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.