我想将空字符与常规字符连接起来,如下所示:
NSString *message = @"ABC";
NSUInteger length = [message length];
char char4 = length;
char char3 = length >> 8;
char char2 = length >> 16;
char char1 = length >> 24;
message = [NSString stringWithFormat:@"%c%c%c%c%@",char4,char3,char2,char1,message];
问题是字符串的长度为 4(看起来像¿ABC
)。如何编辑此代码以便将空字符也附加到字符串中?
回复马克的评论
我在这里尝试做的是将字符串的长度附加到字符串的开头,而不是数字格式,而是 ascii 字符的格式(几乎就像一个基本的 256 数字)。我会使用格式, @"%04c%@",length,message
, 问题是生成的字符串将是000¿ABC
并且零具有 ascii 值(准确地说是十进制的 48),这样就达不到目的了。具有十进制值 0 的 ASCII 字符是空字符 ( \0
),所以我必须使用它而不是 0。我必须有那些前导空字符。
出于我想要完成的目的,以下代码有效
NSUInteger length = [message length];
char char4 = length;
char char3 = length >> 8;
char char2 = length >> 16;
char char1 = length >> 24;
if (char4 == '\0')
message = [NSString stringWithFormat:@"\0%@",message];
else
message = [NSString stringWithFormat:@"%c%@",char4,message];
if (char3 == '\0')
message = [NSString stringWithFormat:@"\0%@",message];
else
message = [NSString stringWithFormat:@"%c%@",char3,message];
if (char2 == '\0')
message = [NSString stringWithFormat:@"\0%@",message];
else
message = [NSString stringWithFormat:@"%c%@",char2,message];
if (char1 == '\0')
message = [NSString stringWithFormat:@"\0%@",message];
else
message = [NSString stringWithFormat:@"%c%@",char1,message];
但是,如果有人可以贡献一些更短或更直观的东西,那就太好了。