objective-c - 如何将 HEXString (NSString) 转换为 ByteArray Objective-C
问题描述
我有一个字符串,我正在尝试将其分解并将其添加到 NSArray。我最近从 Java (android) 迁移到 iOS...我编写了一个 java 函数,它将一个 hexString/string 转换为一个字节数组。我看不到使用objective-c的明显方法。不确定我所尝试的是否接近于实现我所需要的。
这是我的字符串
NSString *code = @"11111bfb";
这是我希望达到的输出
NSArray *codeArray = @[@0x11, @0x11, @0x1b, @0xfb];
方法
- (NSData *)dataFromHexString:(NSString *) string {
if([string length] % 2 == 1){
string = [@"0x"stringByAppendingString:string];
}
const char *chars = [string UTF8String];
int i = 0, len = (int)[string length];
NSMutableData *data = [NSMutableData dataWithCapacity:len / 2];
char byteChars[4] = {'\0','\0','\0','\0'};
unsigned long wholeByte;
while (i < len) {
byteChars[0] = chars[i++];
byteChars[1] = chars[i++];
wholeByte = strtoul(byteChars, NULL, 16);
[data appendBytes:&wholeByte length:1];
}
return data;
}
解决方案
所以这似乎返回了我需要的格式。
NSString * inputStr = @"11111bfb";
NSMutableArray *charByteArray = [[NSMutableArray alloc]initWithCapacity:1];
int i = 0;
for (i = 0; i+2 <= inputStr.length; i+=2) {
NSRange range = NSMakeRange(i, 2);
NSString* charStr = [inputStr substringWithRange:range];
[charByteArray addObject:[NSString stringWithFormat:@"0x%@",charStr]];
}
推荐阅读
- python - 如何设置类方法从类属性中动态返回类型
- reactjs - 'useState' 没有在 REACT 中定义为 no-undef
- python - 合并 2 个 pyspark 数据帧
- c - 如何修复“ws2_32.h”未找到错误?
- c# - 如何使用 WebHttpBinding 附加令牌?
- laravel-livewire - Livewire 计费丢失
- php - 如何将 MySQL 数据库的结构转储添加到 PHP 中的变量?
- java - 如何在junit中禁用配置grpc
- json - 为大于 n 的值生成输出并忽略 JQ 中的其余值
- python-3.x - 安装 ns-3 健身房时遇到问题