-2

我有一个具有以下值的 Java 字符串:

如果我打印字符串,那么它会在下面打印:

内容类型:应用程序/isup;版本=ttc93-老虎;基础=ttc93+

^A^C^B ^G^C^P^P^B^X^BP ^G^C^Q^P^B^Y^CPe^E\236^B--唯一边界-1

在我们在 C 代码中传递这个字符串之后,C 代码将这个字符串存储在字符指针中。这里正在打印

内容类型:应用程序/isup;版本=ttc93-老虎;基础=ttc93+

我的意思是在病房字符之后我没有得到 ^A 。

我没有超越角色的任何原因......一些上限^不支持......类似的东西......

4

1 回答 1

4

^A对我来说看起来像二进制数据。在 Java 中,字符串可以包含任何字符(甚至 0 个字节),因为 Java 存储字符和字符串的长度。在 C 中,第一个 0 字节将终止字符串。

要验证理论,请尝试在转义二进制数据时打印字符串,例如使用StringEscapeUtilsfrom commons-lang 或编写自己的小例程。

于 2013-11-13T10:19:17.777 回答