我正在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中实现此字节数组功能?
答案 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]获取要操作的数组。