gpt4 book ai didi

objective-c - 无法将 Dec 转换为 Hex(Int 到 Char)

转载 作者:太空宇宙 更新时间:2023-11-04 03:06:02 26 4
gpt4 key购买 nike

我知道这似乎是个愚蠢的问题,但我真的遇到麻烦了。

我在一个项目中工作,其中有一些我无法修改的功能。也就是说,我的 Obj 中有一些 C 函数(不是我的专长)。我可以修改的 C 代码。

所以在这里...解释一下我所拥有的。

我收到了类似 "\xce\x2d\x1e\x08\x08\xff\x7f"的 NSData。我必须将每个\hex 代码放在一个 char 数组中,如下所示:

    cArray[1]=ce;
cArray[2]=2d;
cArray[3]=1e;
cArray[4]=08;

等等,等等……当然不是像这样,只是为了让你明白。我最初的举动是将 NSData 与 subdataWithRange: 分开,并用所有“子数据”填充一个数组。所以下一步可能是将该数组的每个位置传递给一个 char 数组,这就是我被卡住的地方。

我正在使用类似的东西(现在没有我的代码)

for(int i=0 ; i<=64 ; i++) {
[[arrayOfSubData objectAtIndex:i] getBytes:&charArray[i]];
}

用我的子数据数组中的十六进制填充字符数组。这几乎完美。差不多。

以 cArray 为例,我的 NSLog(@"pos%i: %x",i,charArray[i]) 会显示:

pos1: ce
pos2: 2d
pos3: 1e
pos4: 8

所有“左零”都以同样的方式被抑制。我目前的解决方法(我不确定这是否是这里的最佳做法)是使用我的 subDataArray 和 initWithFormat: 一个字符串。有了它,我可以使用 NSScanner scanHexInt: 将字符串转换为 int,但是当我将十进制 int 转换回十六进制 CHAR 时,我再次陷入困境。以这种方式填充我的字符数组的最佳方法是什么?

任何帮助或一些“严厉的爱”将不胜感激。谢谢

最佳答案

按照printf formatting的正常规则(NSLog 也遵循)您需要以下内容:

NSLog(@"pos%i: %02x", i, charArray[i]);

'0' 表示用 0 向左填充并且是一个标志。 '2' 表示确保该字段的输出至少为两个字符。因此,这将确保至少输出两个字符并在左侧填充“0”以填充空格。

关于objective-c - 无法将 Dec 转换为 Hex(Int 到 Char),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5098869/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com