【问题标题】:Byte[] Array to Int字节 [] 数组到 Int
【发布时间】:2015-04-16 02:35:17
【问题描述】:

我有一个长度为 128 的字节。我希望能够将这些字节放入单个 int(或字符串)中。

Byte *binaryKey = (Byte *)malloc(128);
// Adds 128 bytes to binaryKey
// eg. binaryKey = {202, 38, 255, 122, 65...}

然后我希望能够将 binaryKey 放入单个 int(如果不可能,甚至是字符串),例如 2023825512265...

【问题讨论】:

  • 很好奇 - 为什么你想要一个十进制格式的字节字符串,却无法分辨一个字节在哪里结束,另一个字节从哪里开始?字符串"2023825512265..." 可以以不同的方式解析,但无法判断它应该是什么。
  • @rmaddy 这是一种相当复杂的加密方法,我将在其中从 Java 转换为 Objective-C。 (我没有写方法,只是为另一个平台重写)。这些字节是用于加密的密钥的一部分。
  • 如果你从另一个平台移植它,那个平台有什么作用?我无法想象它可能采用后一种方法(连接各个字节的十进制字符串表示)。

标签: objective-c string int byte


【解决方案1】:

你可以像这样创建一个字符串:

NSMutableString *keyString = [[NSMutableString alloc] init];
for (int i = 0; i < 128; i++) {
    [keyString appendString:[NSString stringWithFormat:@"%hhu", binaryKey[i]]];
}

【讨论】:

  • @Rob 看看他的例子。这正是他所要求的。 binaryKey = {202, 38, 255, 122, 65...} ---> "2023825512265..."
  • 你说的很对。我读了这个问题,从字面上看,我无法想象有人会写出如此糟糕的加密算法。但重读一遍,这是他要求的。大声笑。
  • @Harry 我不想责怪任何人。但是该页面上的代码与您在此处所要求的完全不同。那是一锅完全不同的鱼。
【解决方案2】:

整数有 2、4 或 8 字节大小。 128 字节不适合它。

为它创建一个字符串非常简单:

NSData *data = [NSData dataWithBytes:binaryKey length:128];
NSString *string = [data base64EncodedStringWithOptions:0];

但是为什么不使用NSData 的实例呢?

【讨论】:

  • 阿明,我刚试过这个,它没有以正确的格式打印字符串。
  • 这是一种相当复杂的加密方法,我将在其中从 Java 转换为 Objective-C。这些字节是用于加密的密钥的一部分。
  • 我没有意识到你真的想要一个十六进制格式。对我来说,听起来你会对任何字符串感到满意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 2016-04-05
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 2015-02-15
相关资源
最近更新 更多