Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么内存中的值和ruby程序中的值不同?_Ruby_Memory Management - Fatal编程技术网

为什么内存中的值和ruby程序中的值不同?

为什么内存中的值和ruby程序中的值不同?,ruby,memory-management,Ruby,Memory Management,我的代码: require 'ffi' ...... str = FFI::MemoryPointer.from_string(gets.chomp) Memory::write(handle, addr, str, str.size, write) 我输入“1234”,但当我启动作弊引擎查看内存时,内存中是“875770417” 如何解决它?875770417是0b00110100 0b001100110b 00110010 0b00110001(二进制),或0x34 0x33 0x32 0

我的代码:

require 'ffi'
......
str = FFI::MemoryPointer.from_string(gets.chomp)
Memory::write(handle, addr, str, str.size, write)
我输入“1234”,但当我启动作弊引擎查看内存时,内存中是“875770417”


如何解决它?

875770417
0b00110100 0b001100110b 00110010 0b00110001
(二进制),或
0x34 0x33 0x32 0x31
(十六进制)。这些是字符串“4321”的ASCII码


我不熟悉作弊引擎,所以我不知道为什么它是反向的(我猜这与endianness有关),但是当你以一种原始的方式看内存时,你真的需要知道你在看什么和要看什么。如果你看十进制数据,就由你来正确解释,计算机不知道原始数字的意思。

875770417
0B0011010 0B001100B 00110010 0B0011001
(二进制),或者
0x34 0x33 0x32 0x31
(十六进制)。这些是字符串“4321”的ASCII码


我不熟悉作弊引擎,所以我不知道为什么它是反向的(我猜这与endianness有关),但是当你以一种原始的方式看内存时,你真的需要知道你在看什么和要看什么。如果你看十进制数据,就看你如何正确地解释它,计算机不知道原始数字的含义。

如何将“875770417”转换为“1234”?有什么函数可以做到呢?@HaoHuang,你应该把1234转换成smth,比如256*4+210==0x00 0x00 0x04 0xD2==“\x00\x00\x04\xD2”。这是一个类似于“
[“1234”。to_i].pack(“i”)=>”\xD2\x04\x00\x00“
如何将“875770417”转换为“1234”?有什么函数可以做到呢?@HaoHuang,你应该把1234转换成smth,比如256*4+210==0x00 0x00 0x04 0xD2==“\x00\x00\x04\xD2”。这是smth类似于
[“1234”。to_i].pack(“i”)=>“\xD2\x04\x00\x00”