转义两个零旁边的空字节

2022-09-01 18:19:44

我需要转义以下定义为静态 final 的序列

final String POSIX_SIGNATURE = "ustar".concat("\0").concat("00");

如何在不使用方法或字符串运算符的情况下转义此问题?.concat()+

final String POSIX_SIGNATURE = "ustar\000"; 

这是无效的,与第一个不同。

final String POSIX_SIGNATURE = "ustar\0\00"; 

这个也不是。


答案 1

使用 unicode 转义序列:

"\u000000"

这是 NUL 字符 (),后跟两个 0。\u0000


答案 2

Darth Android有解决方案,但这就是您的尝试没有按照预期的方式工作的原因。

表示空字符的原因不是因为它是仅用于空字符的特殊转义序列;这是因为它是一个最多3个八进制数字的八进制转义序列\0

字符串的末尾有 1 个空字符,末尾有 2 个空字符,以及 。"ustar\000"\000"ustar\0\00"\0\00

解决方案就像Darth Android之前提到的 - 使用Unicode转义,它正好有4个十六进制数字,所以额外的字符就是 - 字符。是空字符,第 5 个和第 6 个 s 是文字字符。00\u000000


推荐