【问题标题】:obj-c casting char * into char[]?obj-c 将 char * 转换为 char[]?
【发布时间】:2014-01-31 07:51:00
【问题描述】:

我已经看到针对其他语言提出的问题,但不是专门针对objective-c。我如何将 char * 转换为 char []?

代码:

NSString *thisString = @"48454C4C4F";
char *charString = [thisString UTF8String];

NSLog(@"%s",charString);

// output: 48454C4C4F

// how could i convert into char [] = {48,45,etc.)

【问题讨论】:

  • 为什么是 char[]?为什么不是 char*?如果您在函数内部传递 char[],则它是相同的 char*。你能展示一下你将如何使用 char[] 吗?
  • 是的,我在上面的评论中显示// how could i...
  • 我没听错吧?您需要将十六进制字符串转换为字节数组吗?
  • 那是正确的,目前的答案是将十六进制转换为 ascii 或十六进制以外的其他东西。我只是想将 nsstring 转换为 char[] 数组中的 0x48、0x45 等。
  • 我建议使用 Base64 编码。它比 HEX 短得多。并且NSData 具有方便的功能。

标签: objective-c nsstring char


【解决方案1】:

你可以这样做:

NSString *s = @"Some string";
const char *c = [s UTF8String];

你也可以使用

-[NSString cStringUsingEncoding:] 

如果您的字符串使用 UTF-8 以外的其他编码。

一旦有了 const char *,就可以将它用作字符数组:

printf("%c\n", c[5]);

如果要修改字符串,请复制:

char *cpy = strdup(c);
// Work with copy
free(cpy);

如果你必须有一个实际的 char 数组,你可以这样做:

NSString *data = @"Some string";
const char* utf8String = [data UTF8String];
size_t len = strlen(utf8String) + 1;

char mac [len];
memcpy(mac, utf8String, len);

【讨论】:

  • 对不起,这没有帮助。
  • 它不会产生一个字符数组。
  • @user3256385 检查我编辑的答案,这能回答你的问题吗?
  • 嗯,如果太多了也没关系。重要的是它可以转换,它似乎可以转换,所以谢谢。
  • 错误的问题 - 错误的答案。这只是您在数组中复制的字符串。
猜你喜欢
  • 2012-07-01
  • 2013-12-31
  • 2012-01-16
  • 1970-01-01
  • 1970-01-01
  • 2015-12-22
  • 2021-11-30
  • 2010-10-12
  • 2021-04-29
相关资源
最近更新 更多