【问题标题】:Converting char to int c++将 char 转换为 int c++
【发布时间】:2013-11-19 06:12:29
【问题描述】:

我现在正在失去理智,下面是我正在尝试做的事情。

char* buffer;
sprintf(buffer, "0x%08x", 5);
*(int *)(0x834AF2AC + 0x1a) = ?buffer?;

缓冲区 = 0x05000000

我需要在内存中设置它,如果我只设置 05 它将设置为 0x00000005

问题问得更好。 如何将 INT 转换为“0x%08x”格式 所以5变成0x05000000

回答: 正确答案是 *(int *)(0x834AF2AC + 0x1a) = 5

【问题讨论】:

  • 你有比转换为int更大的问题。你正在写一些你不应该写的地方。你需要初始化buffer
  • 那么,int x = 0x05000000; 不适合你?
  • 所以,它仍然没有真正的意义。您是否有需要解析的字符串或想要增大的 int?
  • 那么字符串与它完全无关? int x = 5 << 24;
  • 因为你把它放在了错误的地址。如果您解释了为什么要这样做并且没有将问题与int -> string -> int 废话混淆,那么获得一个好的答案会容易得多。

标签: c++ char int


【解决方案1】:

类似这样的:

#include <iostream> // for std::cout, std::endl
#include <string>   // for std::string, std::stoi
int main()
{

  std::string s{"0x05"};
  int i = std::stoi(s, nullptr, 16); // convert base 16 number in s to int
  std::cout << i << std::endl;

}

【讨论】:

  • 不管用,还是谢谢。我又更新了我的问题。
  • @user2887749 你的问题毫无意义。 intint0x00055 完全相同。
  • 我明白了,但是根据游戏我写的内存是无效的,不能这样做。
  • @user2887749 这很可能是因为您没有为缓冲区分配任何内存,正如我在第一条评论中提到的那样。
  • 嗯,我很难理解,谢谢你的帮助。
【解决方案2】:

来自 google 的两个结果指向 stackoverflow(结果 1 和 2)。

Convert char to int in C and C++

C char* to int conversion

【讨论】:

    【解决方案3】:

    我不确定我是否理解正确,但如果你想将整个string 转换为int,那么我建议stringstream

    http://www.cplusplus.com/reference/sstream/stringstream/stringstream/

    十六进制字符串:

    #include <string>       // std::string
    #include <iostream>     // std::cout
    #include <sstream>      // std::stringstream
    
    int main () {
    
      std::stringstream ss;
    
      ss << std::hex << 0x05;
    
      int foo;
      ss >> foo;
    
      std::cout << "foo: " << foo << '\n';
    
      return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-12-18
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-07
      相关资源
      最近更新 更多