Android
In Android, you can wrap a primitive value in the corresponding object and call toString().
new Integer(someIntValue).toString();
We can use this to write out the string value of an array of bytes as in:
public static String byteArrayToString(byte[] inArray, String delimiter){
if (inArray == null || inArray.length ==0) {return "";}
int lengthArray= inArray.length;
StringBuffer sb= new StringBuffer();
for (int i=0; i< lengthArray; i++){
sb.append(new Byte(inArray[i])+delimiter);
}
return sb.toString();
}
If you do not need a custom delimiter, you can now do Array.toString(myArray) in Java! This will output the array contents with a "," as a delimiter as in:
public static String byteArrayToString(byte[] inArray){
if (inArray == null || inArray.length== 0) { return "";}
return Arrays.toString(inArray);
}
iOS
In iOS, you can use NSString's appendFormat command to get the string value of a primitive. Here is an example that writes out the string value of bytes in an NSData object:
// USAGE NSLog(@"%@",[Utilities dataToString:data delimiter:@"|"]);
+(NSString*)dataToString:(NSData*)inData delimiter:(NSString*)delimiter {
if ([inData length] == 0) {
return @"";
}
if (delimiter == nil) {
delimiter = @"";
}
const unsigned char * p= (const unsigned char *) [inData bytes];
NSMutableString* outString= [[NSMutableString alloc]initWithCapacity:[inData length]*3];
for (int i=0; i< [inData length]; i++) {
[outString appendFormat:@"%02x",p[i]];
[outString appendString:delimiter];
}
[outString autorelease];
return outString;
}
You can create an array of bytes and wrap the array in NSData as in:
unsigned char buffer[numBytes];
// generate random bytes value 0 to 255
// arc4random autoseeds
NSUInteger i; // type def
for ( i = 0; i < numBytes; ++i ){
buffer[ i ] = arc4random() % (255 + 1); // limits to values 0 to 255
}
[NSData dataWithBytes:buffer length:numBytes];