NSString到字节数组,操作它,字节数组到NSString

时间:2012-09-25 13:27:43

标签: ios arrays nsstring byte type-conversion

我正在Windows和iOS上制作一个项目。

在windows中,我从用户那里获取输入,将其转换为字节数组,通过向每个字节添加大的随机值来操纵数组(有点像编码它),然后将转换为String的字节数组返回给用户。

我想在iOS应用中实现相同的功能。 我从UITextField(插座说:myTextField)

获取输入

现在的问题是,如何将其转换为Windows中的字节数组并进行操作。 我搜索了堆栈溢出并找到了这段代码

const char *bytearray = [self.myTextField.text UTF8String];

使用它,它给了我一个我想要的字节数组,但它是一个const char *,我无法操纵它。 那么如何将它存储在一个数组中来操作它。

此外,当在窗口中向数组中的字节添加值时,如果值超过256,则自动保持在256(例如,115 + 300,它存储为159),这简化了我减去值的过程,获得原始价值。如何在iOS应用程序中完成。

 For a better clarity, I'll give an example of how it works in Windows
 byte array contains 'n' (Decimal value: 110) 
 adding 200 to it stores '6' (Decimal value: 54) 
 [310 % 256 = 54]

 When retrieving back original value I subtract 200 from '6' (54 - 200 = -146) 
 and get the original value (256 - 146 = 110) 
 All this is done automatically, by using a byte array (this 256 - 146 thing)

如何在iOS中实现此字节数组功能?

2 个答案:

答案 0 :(得分:1)

  

如何将其转换为Windows中的字节数组并进行操作。一世   搜索堆栈溢出并找到这段代码

查看NSString的-getCString:maxLength:encoding:方法,该方法将使用您指定的编码解释字符串,并将结果复制到您提供的缓冲区中。然后你可以随意操纵它。在类似的行中有一两种其他方法,但是应该让你开始。

要转换回NSString,您可以使用+stringWithCString:encoding+stringWithUTF8String:+stringWithCharacters:length:或其中任何版本的-init...版本。

  

另外,当在窗口中向数组中的字节添加值时,如果是值   超过256,它自动保持在256(例如,115 + 300,它   存储为159),这简化了我减去值的过程   获得原始价值。如何在iOS应用程序中完成。

不是操作系统决定了那种行为,而是语言。 Objective-C在这方面的行为就像C,C ++和C#一样 - 如果你使用类似unsigned char的类型,则值将被限制为0..255。毕竟,你只能在8位中输入这么多的值。

答案 1 :(得分:1)

我会将NSString对象转换为NSMutableData对象。然后使用[NSMutableData mutableBytes]获取要操作的数组。