问题描述
- 传递(UInt8数组的指针)和访问数组
-
目前正在做关于UInt8数组的相关应用,遇到问题。我的代码:
@interface MyClass : NSObject { __strong id * myArray; //private byte[] myArray; <- Java code } @property (nonatomic,readwrite) __strong id * myArray; @end
在MyClass中的方法:
-(int) getArray: (__strong id *) bufferTmp { NSString* aString = @"theString"; int bytes = aString.length; //now I need to fill the passed in array with the chars of the String for (int i = 0; i < bytes; i++) { char c = [aString characterAtIndex:i]; ??? bufferTmp[i] = (UInt8)c; <----- what to write here? } return bytes; }
下面是我准备调用方法充填myBuffer的代码:
UInt8 myBuffer[10000]; [xxx read: myBuffer]; <- 不知道这段正确么?
这是相同的java代码:
public int getArray(byte[] bufferTmp) { String theString = "theString"; for (int i = 0; i < bytes; i++) { char c = theString.charAt(i); bufferTmp[i] = (byte) c; } return bytes; }
在java中调用方法的代码:
byte[] myBuffer = new byte[10000]; int n = read(myBuffer);
解决方案
在Objective-C中可以使用NSDate对象当做byte buffer, 然后dataUsingEncoding获取字节表示的字符串:
NSString *aString = @"theString";
NSData *myBuffer = [aString dataUsingEncoding:NSUTF8StringEncoding];
const char *bytes = [myBuffer bytes]; // pointer to the bytes in the buffer
NSUInteger count = [myBuffer length]; // number of bytes in the buffer
时间: 2024-11-02 10:44:08