如何使用swift将字符串分解为字节组

时间:2014-07-10 15:08:06

标签: ios swift

我有一个很长的字符串(大约2.000个字符,但可能更多),我需要将其分成多达255个字节的块。 我意识到我必须遍历整个字符串(看到它here),但它不清楚如何。

我该怎么做?

2 个答案:

答案 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);

如果您想要解释代码,请告诉我。