gpt4 book ai didi

c++ - 内存中的 Ascii 到十进制,是否会有按位移位的答案?

转载 作者:行者123 更新时间:2023-11-30 21:19:32 25 4
gpt4 key购买 nike

我的问题:
我想通过移位或您知道的任何其他方式将内存中的 Ascii(十六进制)更改为十进制值?

我想要一个分配内存的函数,如下所示:

来自(输入):
内存示例:32 35 38 00 (Ascii 258)
指针示例:+var 0x0057b730 "258"const char *

至(输出)(我正在寻找的答案):
示例内存:02 01 00 00
指针示例:&var 0x0040f9c0 {258} int *
Int 示例:var 258 int

这个函数将(不会)产生我上面的答案:
此函数将生成十进制 (600) 答案和十六进制 (258) 答案。

int Utility::AsciiToHex_4B(void* buff)
{
int result = 0, i = 0;
char cWork = 0;

if (buff != NULL)
{
for (i = 0; i <= 3; i++)
{
cWork = *((BYTE*)buff + i);
if (cWork != NULL)
{
if (cWork >= '0' && cWork <= '9')
cWork -= '0';
else if (cWork >= 'a' && cWork <= 'f')
cWork = cWork - 'a' + 10;
else if (cWork >= 'A' && cWork <= 'F')
cWork = cWork - 'A' + 10;

result = (result << 4) | cWork & 0xF;
}
}
return result; // :) Good
}
return result; // :( Bad
}

我看过很多关于将 Ascii 更改为 Int 或 Ascii 更改为 Hex 甚至 Ascii 更改为 Decimal 的答案和问题,但没有一个回答上述问题。

感谢您提供的任何帮助。

最佳答案

“我想通过移位将内存中的 Ascii(十六进制)更改为十进制值..”不,转移对你没有帮助。

“...或者您知道的任何其他方式吗?”是的,正如你所说,已经有一些问题可以回答这个问题了。(简而言之,您需要通过添加 cWork 乘以正确的基数十 (1,10,100) 来替换移位操作,并使用字节顺序使其正确。但只需使用现有答案即可。)

关于c++ - 内存中的 Ascii 到十进制,是否会有按位移位的答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47772188/

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