Gus*_*s D 3 bytearray string-conversion
我认为这是一个新手类型的问题,但我已经很了解这一点。
我可以找到很多关于如何将字符串转换为各种语言的字节数组的帖子。
我不明白的是在逐个字符的基础上发生了什么。我知道屏幕上显示的每个字符都由一个数字表示,例如它的 ascii 代码。(我们现在可以坚持使用 ASCII,所以我从概念上得到了这个 :-))
这是否意味着当我想表示一个字符或一个字符串(这是一个图表列表)时,会发生以下情况
将字符转换为 ASCII 值 > 将 ascii 值表示为二进制?
我见过通过将字节数组定义为输入字符串长度的 1/2 来创建字节数组的代码,所以字节数组肯定与字符串长度相同?
所以我有点困惑。基本上,我试图将一个字符串值存储到 ColdFusion 中的字节数组中,我看不到它有一个显式的字符串到字节数组函数。
但是,我可以了解底层的 Java,但我需要知道理论层面上发生了什么。
提前致谢,如果您认为我疯了,请告诉我!
格斯
在 Java 中,字符串存储为 16 位char值的数组。字符串中的每个 Unicode 字符在char数组中存储为一个或(很少)两个值。
如果要将一些字符串数据存储在byte数组中,则需要能够将字符串的 Unicode 字符转换为字节序列。这个过程称为编码,有多种方法可以实现,每种方法都有不同的规则和结果。如果两段代码想要使用字节数组共享字符串数据,他们需要就使用的编码达成一致。
例如,假设我们有一个s要使用UTF-8编码进行编码的字符串。UTF-8 有一个方便的特性,如果您使用它对仅包含 ASCII 字符的字符串进行编码,则输入中的每个字符都将转换为具有该字符的 ASCII 值的单个字节。我们可以将我们的 Java 字符串转换为 Java 字节数组,如下所示:
byte[] bytes = s.getBytes("UTF-8");
字节数组bytes现在包含来自 的字符串数据s,使用 UTF-8 编码编码为字节。
现在,我们在某处存储或传输字节,另一端的代码想要将字节解码回 Java String。它将执行以下操作:
String t = new String(bytes, "UTF-8");
假设没有出错,字符串t现在包含与原始字符串相同的字符串数据s。
请注意,两段代码必须就所使用的编码达成一致。如果他们不同意,结果字符串可能最终包含垃圾,甚至可能根本无法解码。