我想連接與常規字符空字符,像這樣:追加空字符以常規字符
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