gpt4 book ai didi

bytearray - 将字符串转换为字节数组时会发生什么

转载 作者:行者123 更新时间:2023-12-04 12:27:09 30 4
gpt4 key购买 nike

我认为这是一个新手类型的问题,但我很理解这一点。

我可以找到很多关于如何将字符串转换为各种语言的字节数组的帖子。

我不明白的是逐个字符发生了什么。我知道屏幕上显示的每个字符都由一个数字表示,例如它的 ascii 代码。 (我们现在可以坚持使用 ASCII 以便我从概念上理解它 :-))

这是否意味着当我想表示一个字符或一个字符串(这是一个字符列表)时会发生以下情况

将字符转换为 ASCII 值 > 将 ascii 值表示为二进制?

我见过通过将字节数组定义为输入字符串长度的 1/2 来创建字节数组的代码,那么字节数组的长度肯定与字符串的长度相同吗?

所以我有点困惑。基本上我试图将一个字符串值存储到 ColdFusion 中的一个字节数组中,我看不到它有一个显式的字符串到字节数组的函数。

但是我可以接触到底层 java,但我需要知道在理论层面上发生了什么。

提前致谢,如果您认为我疯了,请告诉我!!

古斯

最佳答案

在 Java 中,字符串存储为 16 位 char 值的数组。字符串中的每个 Unicode 字符在数组中存储为一个或(很少)两个 char 值。

如果您想将一些字符串数据存储在byte 数组中,您需要能够将字符串的Unicode 字符转换为字节序列。此过程称为 encoding 有几种方法可以做到,每种方法都有不同的规则和结果。如果两段代码想要使用字节数组共享字符串数据,则它们需要就所使用的编码达成一致。

例如,假设我们有一个要使用 UTF-8 编码的字符串 s 编码。 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 相同的字符串数据。

请注意,两段代码必须就所使用的编码达成一致。如果他们不同意,结果字符串可能是 end up containing garbage ,甚至可能根本无法解码。

关于bytearray - 将字符串转换为字节数组时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7137569/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com