Tuesday, May 14, 2013

NSString getBytes maxLength usedLength encoding options range remainingRange example ios


[NSString getBytes maxLength usedLength encoding options range remainingRange]

Gets a given range of characters as bytes in a specified encoding.
- (BOOL)getBytes:(void *)buffer maxLength:(NSUInteger)maxBufferCount usedLength:(NSUInteger*)usedBufferCount encoding:(NSStringEncoding)encoding options:(NSStringEncodingConversionOptions)options range:(NSRange)range remainingRange:(NSRangePointer)leftover
Parameters
buffer
A buffer into which to store the bytes from the receiver. The returned bytes are not NULL-terminated.[NSString getBytes maxLength usedLength encoding options range remainingRange]
maxBufferCount
The maximum number of bytes to write to buffer.
usedBufferCount
The number of bytes used from buffer. Pass NULL if you do not need this value.
encoding
The encoding to use for the returned bytes.
options  
A mask to specify options to use for converting the receiver’s contents to encoding (if conversion is necessary).  [NSString getBytes maxLength usedLength encoding options range remainingRange]
range
The range of characters in the receiver to get.
leftover
The remaining range. Pass NULL If you do not need this value.
Return Value
YES if some characters were converted, otherwise NO.
Discussion of [NSString getBytes maxLength usedLength encoding options range remainingRange]
Conversion might stop when the buffer fills, but it might also stop when the conversion isn't possible due to the chosen encoding.
Example of [NSString getBytes maxLength usedLength encoding options range remainingRange]
NSUInteger numberOfBytes = [message lengthOfBytesUsingEncoding:NSUnicodeStringEncoding];
void *buffer = malloc(numberOfBytes);
NSUInteger usedLength = 0;
NSRange range = NSMakeRange(0, [message length]);
BOOL result = [message getBytes:buffer maxLength:numberOfBytes usedLength:&usedLength encoding:NSUnicodeStringEncoding options:0 range:range remainingRange:NULL];
...
free(buffer);
Example of [NSString getBytes maxLength usedLength encoding options range remainingRange]
NSString *src;
char dest[16];
NSUinteger destlen;
[src getBytes:dest
    maxLength:sizeof(dest) - 1
    usedLength:&destlen
    encoding:NSUTF8StringEncoding
    options:0
    range:NSMakeRange(0, [src length])
    remainingRange:NULL];
dest[destlen] = '\0';
Example of [NSString getBytes maxLength usedLength encoding options range remainingRange]
NSUInteger length = [str length];
NSUInteger bufferSize = 500;

char buffer[bufferSize] = {0};

[str       getBytes:buffer
          maxLength:(bufferSize - 1)
         usedLength:NULL
           encoding:NSUTF8StringEncoding
            options:0
              range:NSMakeRange(0, length)
     remainingRange:NULL];