我有一个很长的字符串(大约2.000个字符,但可能更多),我需要将其分成多达255个字节的块。 我意识到我必须遍历整个字符串(看到它here),但它不清楚如何。
我该怎么做?
答案 0 :(得分:3)
如果您查看第128页的The Swift Programming Guide
,您可以看到如何迭代字符串。从字符串中获取的字节数取决于您要求字符串提供给您的编码。您可能需要UTF-8(8位编码),如第130页所述:
let dogString = "Dog!"
for codeUnit in dogString {
print("\(codeUnit) ")
}”
“print("\n")
// 68 111 103 33 240 159 144 182”
摘自:Apple Inc.“The Swift Programming Language。”iBooks。 https://itun.es/gb/jEUH0.l
注1代码单元可能不包含整个字符(因为某些字符由多个代码单元表示,在这种情况下,'dogface'具有4字节编码,而ascii字符每个只需要一个字节)。
答案 1 :(得分:1)
NSString *str = [NSString stringWithContentsOfFile:[@"~/Desktop/bytes" stringByExpandingTildeInPath] encoding:NSUTF8StringEncoding error:nil];
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
NSMutableArray *chunks = [NSMutableArray array];
NSUInteger readPointer = 0;
NSUInteger distanceToEndOfData;
while (readPointer + 255 < data.length) {
distanceToEndOfData = data.length - readPointer;
[chunks addObject:[data subdataWithRange:NSMakeRange(readPointer, 255)]];
readPointer += 255;
}
distanceToEndOfData = data.length - readPointer;
if (distanceToEndOfData > 0) [chunks addObject:[data subdataWithRange:NSMakeRange(readPointer, distanceToEndOfData)]];
NSLog(@"%@", chunks);
如果您想要解释代码,请告诉我。