1
NSString *strVal= @"BAAA";
如何将上述字符串转换为位值?我应该在这之前进行字节转换吗? 需要帮助。我以前检查过整数转换的this question。将NSString转换为位值
NSString *strVal= @"BAAA";
如何将上述字符串转换为位值?我应该在这之前进行字节转换吗? 需要帮助。我以前检查过整数转换的this question。将NSString转换为位值
无论你将字符串转换为UTF-8是否由你决定,这取决于你想要的。内部NSString
使用unichar
类型将字符存储为UTF-16(实际上可能是UCS-2),因此您需要决定是要内部表示还是其他外部编码的二进制。
我希望你想要的UTF-8编码的二进制,所以试试这个(测试):
#import <Foundation/Foundation.h>
@interface BinFuncs : NSObject
+ (NSString *)binaryOfString:(NSString *)str;
@end
@implementation BinFuncs
+ (NSString *)binaryOfString:(NSString *)str {
NSMutableString *binStr = [[NSMutableString alloc] init];
const char *cstr = [str UTF8String];
size_t len = strlen(cstr);
for (size_t i = 0; i < len; i++) {
uint8_t c = cstr[i];
for (int j = 0; j < 8; j++) {
[binStr appendString:((c & 0x80) ? @"1" : @"0")];
c <<= 1;
}
}
return binStr;
}
@end
int main(int argc, const char **argv) {
@autoreleasepool {
for (int i = 1; i < argc; i++) {
NSString *binStr = [BinFuncs binaryOfString:[NSString stringWithUTF8String:argv[i]]];
NSLog(@"%@", binStr);
}
}
return 0;
}
$ clang -o binstr binstr.m -framework Foundation
$ ./binstr 'the quick brown fox jumps over the lazy dog'
2013-09-30 09:19:49.674 binstr[58474:707] 01110100011010000110010100100000011100010111010101101001011000110110101100100000011000100111001001101111011101110110111000100000011001100110111101111000001000000110101001110101011011010111000001110011001000000110111101110110011001010111001000100000011101000110100001100101001000000110110001100001011110100111100100100000011001000110111101100111
难道这应该是一个数的十六进制表示?你是否应该将它转换为unicode的二进制表示?或者是什么? –
您可以使用dataUsingEncoding将NSString转换为可以轻松访问的octect流的NSData对象。你也可以将它转换成一个C风格的字符串,并从那里开始。但我怀疑你的问题是那么简单。你真的在做什么?请稍微具体一点。 –