【发布时间】:2013-01-17 06:09:54
【问题描述】:
我需要将 NSString 解析为字节数组,但在执行此操作时遇到了一些麻烦。我在方法中有一个填充字节数组并将其转换为可变字符串,然后我有一个方法需要将这些数字放回字节数组中。 在 C# 中,它很简单:
do
{
val = byte.Parse(str.Substring(i, 3));
byteArr[j++] = val;
i += 3;
}
这里是代码片段 注意**我在 do 循环中尝试了很多不同的东西,所以现在那里一团糟:
-(NSData*) StrToByteArray: (NSString*)str
{
NSLog(@"StrToByteArray. String: %@", str);
if([str length]==0)
NSLog(@"Invailid String");
int val;
Byte byteArr[[str length]/3];
int i = 0;
int j = 0;
NSRange range;
do {
range = NSMakeRange(i, 3);
val = (int)[str substringFromIndex:i];
NSLog(@"StrToByteArray. VAR: %i", val);
byteArr[j++] = val;
NSLog(@"byteArr: %i",byteArr[i]);
i+=3;
}while(i<str.length);
NSData* wrappedByteArr = [NSData dataWithBytes:&byteArr length: sizeof(byteArr)];
return wrappedByteArr;
}
这是制作填充字符串的循环:
for(int i = 0; i<=len;i++)
{
val = byteArr[i];
NSLog(@"byteArr to string original: %i", val);
if(val<(Byte)10)
{
[tempStr appendString:(@"00")];
[tempStr appendString:[NSString stringWithFormat:@"%d",val]];
}
else if(val<(Byte)100)
{
[tempStr appendString:(@"0")];
[tempStr appendString:[NSString stringWithFormat:@"%d",val]];
}
else {
[tempStr appendString:[NSString stringWithFormat:@"%d",val]];
}
}
NSLog(@"string: %@", tempStr);
return tempStr;
【问题讨论】:
-
对不起,我发布了一个答案,但没有意识到你在做什么。您是说您的字符串实际上包含诸如“123255000123”之类的数字,并且您想将其转换为四个字节,123、255、000 和 123?你能显示你想转换成数据的字符串吗?
-
没错,字符串是238095076083154150180036184206087006249074132222096
-
所以基本上,您想一次迭代字符串 3 个字符,并且每次迭代都取这三个字符的整数值,并将其设置为字节数组中索引的值?
标签: ios objective-c macos