gpt4 book ai didi

c++ - 将十六进制数的char[]转换为ascii表中十六进制数对应字母的char[]并取反

转载 作者:行者123 更新时间:2023-11-30 01:24:47 25 4
gpt4 key购买 nike

我有一个像这样的十六进制字符的 char a[]:

"315c4eeaa8b5f8aaf9174145bf43e1784b8fa00dc71d885a804e5ee9fa40b16349c146fb778cdf2d3aff021dfff5b403b510d0d0455468aeb98622b137dae857553ccd8883a7bc37520e06e515d22c954eba5025b8cc57ee59418ce7dc6bc41556bdb36bbca3e8774301fbcaa3b83b220809560987815f65286764703de0f3d524400a19b159610b11ef3e"

我想像这样将它转换为对应于每个十六进制数的字母:

68656c6c6f = hello

并将其存储在char b[]中,然后执行相反的操作

我不想要代码块,我想要解释以及使用了哪些库以及如何使用它。

谢谢

最佳答案

假设您正在谈论 ASCII 码。嗯,第一步是找到 b 的大小。 .假设所有字符都由 2 个十六进制数字组成(例如,tab 将是 09 ),那么大小为 b就是strlen(a) / 2 + 1 .

完成后,您需要查看 a 的字母, 2 x 2,将它们转换为整数值并将其存储为字符串。写成你有的公式:

b[i] = (to_digit(a[2*i]) << 4) + to_digit(a[2*i+1]))

哪里to_digit(x)转换 '0'-'9'0-9'a'-'z''A'-'Z'10-15 .

注意如果0x10下面的字符只显示一个字符(我唯一能想到的是 tab,然后不要使用 2*i 作为 a 的索引,您应该在循环中保留一个 next_index,这是如果 a[next_index] < '8' 则加 2,否则加 1。在后一种情况下,b[i] = to_digit(a[next_index])

这个操作的逆向非常相似。每个字符 b[i]写成:

a[2*i] = to_char(b[i] >> 4)
a[2*i+1] = to_char(b[i] & 0xf)

哪里to_charto_digit相反.

关于c++ - 将十六进制数的char[]转换为ascii表中十六进制数对应字母的char[]并取反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13344134/

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