0

我正在尝试将以下 Java 代码移植到 Objective C。

myByteBuffer = new ByteArrayOutputStream(myCfA.length() + 1);
myByteBuffer.write(myCfA.getBytes());
myByteBuffer.write(new byte[]{0});
myWriter.write(myByteBuffer.toByteArray());
myWriter.flush();

这是相关的Objective-C代码

NSInteger strLength = self.myCfA.length;
NSMutableString *response  = [NSMutableString stringWithCapacity:strLength];
[response appendString:self.myCfA];
[response appendString:@"0"];
NSData *data = [[NSData alloc] initWithData:[response dataUsingEncoding:NSUTF8StringEncoding]];
NSInteger bytesCount = [self.outputStream write:[data bytes] maxLength:[data length]]; 

我采用 NSMutableString 然后转换为 NSData 并获取字节的方法是正确的方法吗?同样对于 new byte[]{0} 我直接附加 0 作为字符串。如果我错了,请纠正我。这里有一个我无法追踪的问题。

谢谢苏德希尔

4

1 回答 1

0

self.myCfA 是一个字符串,您可以直接将其转换为 NSData。所以下面给出的代码会给你同样的结果。

NSData *data = [self.myCfA dataUsingEncoding:NSUTF8StringEncoding]
NSInteger bytesCount = [self.outputStream write:[data bytes] maxLength:[data length]];

更新:将字节附加到现有数据。

NSMutableData *data = [NSMutableData dataWithData:[self.myCfA dataUsingEncoding:NSUTF8StringEncoding]];
[data appendBytes:[@"\0" UTF8String] length:1];
NSInteger bytesCount = [self.outputStream write:[data bytes] maxLength:[data length]];
于 2013-09-19T11:47:39.723 回答