IOS中怎么把NSString转成byte数组啊?像java中getBytes这样的

tingfengzheshuo 2015-09-09 02:55:08
项目中需要调用.c文件中的一个函数,像这样的
int32_t gpc_prep(uint8_t *input, uint32_t input_len, uint8_t *output, uint32_t output_len)
input和output在java中是两个byte数组,这是我之前做的android项目中的,现在移植到IOS中有一些小问题,input这个数组一个字符串转换成的byte数组,output用来接收一串数据的缓存。在java中input直接用String中的getBytes方法就得到了,IOS中怎么把NSString转成byte数组啊,看了系统里面的方法,有getBytes方法,但是自己试着用总是有问题啊,同样一个字符串,在java中的和xcode中调试得到的数组不一样
我尝试了几个方法
-(NSData *) NSString2Bytes{
NSMutableData *data = [NSMutableData data];
int idx;
for (idx = 0; idx + 2 <= self.length; idx += 2) {
NSRange range = NSMakeRange(idx, 2);
NSString *hexStr = [self substringWithRange:range];
NSScanner *scanner = [NSScanner scannerWithString:hexStr];
unsigned int intValue;
[scanner scanHexInt:&intValue];
[data appendBytes:&intValue length:1];
}
return data;
}
还有dataUsingncoding方法,感觉都不太好用啊。
请大神解答下怎么开辟一个byte数组做缓存啊,像C语言中的byte bufbyte[1024]好像有问题啊。
...全文
1366 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
LichKingSZ 2015-09-09
  • 打赏
  • 举报
回复

/**
 *	@brief	将字符表示的16进制数转化为二进制数据
 *
 *	@param 	hexString 	字符表示的16进制数,长度必须为偶数
 *
 *	@return	二进制数据
 */
- (NSData *)dataWithHexString:(NSString *)hexString
{
    // hexString的长度应为偶数
    if ([hexString length] % 2 != 0)
        return nil;
    
    NSUInteger len = [hexString length];
    NSMutableData *retData = [[[NSMutableData alloc] init] autorelease];
    const char *ch = [[hexString dataUsingEncoding:NSASCIIStringEncoding] bytes];
    for (int i=0 ; i<len ; i+=2) {
        
        int height=0;
        if (ch[i]>='0' && ch[i]<='9')
            height = ch[i] - '0';
        else if (ch[i]>='A' && ch[i]<='F')
            height = ch[i] - 'A' + 10;
        else if (ch[i]>='a' && ch[i]<='f')
            height = ch[i] - 'a' + 10;
        else
            // 错误数据
            return nil;
        
        int low=0;
        if (ch[i+1]>='0' && ch[i+1]<='9')
            low = ch[i+1] - '0';
        else if (ch[i+1]>='A' && ch[i+1]<='F')
            low = ch[i+1] - 'A' + 10;
        else if (ch[i+1]>='a' && ch[i+1]<='f')
            low = ch[i+1] - 'a' + 10;
        else
            // 错误数据
            return nil;
        
        int byteValue = height*16 + low;
        [retData appendBytes:&byteValue length:1];
    }
    
    return retData;
}
内容概要:本文围绕基于分布鲁棒优化的风电不确定性机组组合问题展开研究,提出了一种能够有效应对风电出力不确定性的数学模型与求解方法。通过构建分布鲁棒优化模型,充分考虑风电预测误差的概率分布特征及其不确定性集合的数学表达,在保障电力系统安全运行的前提下,优化发电机组的启停计划与出力分配,从而提升调度方案的经济性与鲁棒性。文系统阐述了模型的理论基础、不确定性集合的构造方式、目标函数与约束条件的设计,并结合Matlab代码实现了算法仿真与案例验证,展示了该方法在不同场景下的适应能力与性能优势。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力,从事新能源并网调度、电力系统运行优化、能源系统建模等方向的研究人员、高校研究生以及相关领域的工程技术开发者。; 使用场景及目标:①应用于高比例可再生能源接入背景下的电力系统机组组合决策,增强调度方案对风电波动的抵御能力;②为电力市场环境的发电计划编制与日前调度提供科学依据和技术支持;③作为分布鲁棒优化理论在能源系统不确定性建模应用的教学与科研案例,推动相关算法的推广与改进。; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解流程,重点关注不确定性集的设定逻辑、鲁棒性参数的选择以及算法实现细节,可进一步拓展至多能源耦合系统或多时间尺度调度场景的研究。

29,040

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧