为什么内存中的值和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”