【问题标题】:how to convert nsstring to Binary and that Binary to Hexadecimal如何将 nsstring 转换为二进制和二进制转换为十六进制
【发布时间】:2011-09-04 18:32:36
【问题描述】:

我在字符串中有多个值 这是我的字符串的示例

str1 = @"20AB"

str2 = @"298C30:2FC0A0:2FC09C:FFFFFFFF:2FDFCD34:00"

str3 = @"4ffd565372df51089f2c824526f4f95a13daa867"

str4 = hexa(binary(str1 + str2 +str3))

即我需要将字符串转换为二进制,然后转换为十六进制十进制,然后将所有 3 个字符串连接到一个字符串中。

请帮我看看怎么做。

提前致谢

【问题讨论】:

  • “先转换成二进制再转换成十六进制”是什么意思?你想要分别表示二进制和十六进制的字符串(即 010101... 和 ff4234...),为什么要中间的“二进制”形式?还是你想要原始字节?
  • 我正在执行某种加密。为此,我需要这样的价值。这样所有的字符串值都不能轻易识别,这就是我需要这种双重转换的原因。

标签: iphone objective-c c iphone-sdk-3.0


【解决方案1】:

您可以使用 NSScanner 转换为 HEx 和 Bytes 来读取二进制数据...

【讨论】:

    【解决方案2】:

    我不太了解 Obj-C 或 iPhone SDK,但在 C 中,您的解决方案将遵循以下思路:

    • 使用strtol() 将字符串转换为数字(检查通过第二个参数返回到该函数的指针'\0' 以区分您是否到达了字符串结尾或仅是下一个':' 分隔符);
    • 使用sprintf()%x 转换说明符将数字再次转换为字符串。

    很遗憾,您的问题不够精确,无法提供更准确的答案。

    【讨论】:

    • 感谢您的回复,但我的简单问题是将给定字符串转换为二进制值,然后将这些二进制值转换为 Hexa 值。并将所有 3 个十六进制值组合成一个甲酸盐。
    • @iPhone Fun:这个问题一点都不简单,我们有很多猜测和假设。 str2 中的那些冒号是单独值的分隔符,还是应该忽略它们? (我假设它们是分隔符。)“二进制”值到底是什么意思? (我假设您的意思是“数字”。)“concat”/“combining”这些值是什么意思?加起来?串联?所需的宽度/分隔符是多少?你想要一个领先的"0x" 来配合吗?你想要小写 [a-f] 还是大写 [A-Z]?还是没关系?精确的需求说明是一种技能......
    • 我将通过服务器执行一些身份验证来注册应用程序用户。同时,虽然我需要用户提供一些具有用户权限的数据进行备份,但我需要创建令牌。 str2 需要分隔符。以及通过创建二进制,然后它的六进制值将创建少量的我的令牌值。我的服务器将通过将十六进制转换为二进制来再次解码它的原始值。和情人和上层无所谓。和 concat 意味着我需要一个包含所有 2 个字符串十六进制值的 1 个字符串。也感谢您对问题的兴趣。
    • @iPhone Fun:这变成了“如何表达一个好的要求”的答案。 ;-) 实际上根本你将使用那些字符串for并不重要。您是说您需要“所有 2 个字符串十六进制值”,但您有 三个 字符串,我仍然不知道您是否需要单独的值 concatenated分隔符分隔。无论哪种方式,我在回答中提到的函数都可用于生成您可能希望的 any 结果。你有没有看过它们,或者你正在等待一个易于编写的代码解决方案?
    猜你喜欢
    • 2012-06-26
    • 2016-08-28
    • 2013-07-25
    • 2015-08-03
    相关资源
    最近更新 更多