我想连接与常规字符空字符,像这样:追加空字符以常规字符
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];
但是,如果任何人都可以有所贡献更短或更直观,那简直太好了。
char变量是长度上的移位,与字符串的值没有任何关系,并且将0放入字符串中将不会执行任何操作(字符串以\ 0结尾)您真的想要做什么? – Mark 2012-04-08 21:50:25
您可以将'NULL'放入char数组中,但您必须自己记录长度以及编写自己的打印例程,因为大多数C标准库函数都依赖于以NULL结尾的字符串。 – hellork 2012-04-08 21:54:51
请注意,@ shellork:ASCII NUL'\ 0'U + 0000是一个字符代码; NULL是一个空指针常量。这些都不是一回事。 – 2012-04-08 22:00:10