Search code examples
iosobjective-cnsdata

Append 3 bits to start of nsdata


I am having trouble adding 3 bits to the left side of nsdata (at the start). Here is the java code I am trying to convert to iOS

public byte[] getMessageInFormat(final int MessageType, final int MessageNum, final int MessageNum2, byte[] rawMessage){
        byte[][] result = null;
        byte[] byteStream = new byte[rawMessage.length + 3]; 
        byteStream[0] = (byte) MessageType;
        byteStream[1] = (byte) MessageNum;
        byteStream[2] = (byte) MessageNum2;

        for (int i=0; i<rawMessage.length; i++)
        {
            byteStream[3+i] = rawMessage[i];
        }

    return byteStream;

}

This doesn't work

NSData *rawMessage = [@"hello world" dataUsingEncoding:NSASCIIStringEncoding];
NSMutableData * byteStream = [[NSMutableData alloc] init];
        [byteStream appendBytes:&MessageType length:sizeof(MessageType)];
        [byteStream appendBytes:&MessageNum length:sizeof(MessageNum)];
        [byteStream appendBytes:&MessageNum2 length:sizeof(MessageNum2)];
        [byteStream appendData:rawMessage];

Solution

  • [byteStream appendBytes:&MessageType length:sizeof(MessageType)];
    

    Did not work because MessageType is an int and replacing "size of" to 1 works

    [byteStream appendBytes:&MessageType length:1];