小编Bhu*_*bus的帖子

新手Python:输出NULL字节的打印函数

我根本不用Python编程,所以请原谅我的代码.我正在尝试编写一个打印函数,该函数在一定数量的字节后终止.这是我到目前为止所做的:

   def print_stuff(stuff, size):
    i = 0
    data = ""
    while i < size:
            if stuff[i]=='\0':
                    data += " "
            else:
                    data += stuff[i]
    print data
Run Code Online (Sandbox Code Playgroud)

但是当我试图做printf_stuff(data,5050)时,Python不会打印任何内容并且似乎冻结了.我究竟做错了什么?

python printing

1
推荐指数
1
解决办法
190
查看次数

将IP地址转换为十六进制

我想知道如何在x86机器上手动将IP地址转换为十六进制值.例如,我正在阅读的书给出了192.168.42.72的十六进制表示:

    0x482aa8c0
Run Code Online (Sandbox Code Playgroud)

但从未解释转换的工作原理.那么,它是怎么回事?

x86 hex

1
推荐指数
1
解决办法
3万
查看次数

装配六角转储

我试图学习x86程序集中的调试,我正在尝试调试我的简单C程序.但是,我对如何在内存中存储大值(如字符串)感到困惑.例如,假设我将字符串VEQ9SZ9T8I62ZCIWE6RKZDE6AZSI2存储在寄存器EBX的地址0012E965处,我查看该地址的十六进制转储,我怎么知道它的结束位置?假设我没有在该位置存储好的ASCII字符串,我怎么知道该特定地址的十六进制转储结束的位置?正如你所看到的,我是大会的初学者,所以我感谢大家的耐心和帮助.

c x86 assembly

0
推荐指数
1
解决办法
605
查看次数

堆栈上EBP寄存器的大小?

当ebp寄存器被压入堆栈时(这是在IA-32架构上)它占用了多少字节?

x86 assembly

0
推荐指数
1
解决办法
1994
查看次数

Ruby:在内存中移动,推送和弹出

我知道shift,push和pop是用于添加/删除数组元素的Array方法,但我不确定内存中实际发生了什么.例如,方法pop删除数组的最后一个元素.它让我想起了堆栈中使用的LIFO命令,但我认为该元素并不像汇编编程那样"弹出"; 而是整个数组的索引被移位.我真的不知道如果有人能帮助我,我会非常感激.

ruby

0
推荐指数
1
解决办法
1434
查看次数

分析Python代码:模数运算符

我在看Python中的一些代码(我对Python一无所知),我遇到了这个部分:

def do_req(body):
    global host, req
    data = ""
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host, 80))
    s.sendall(req % (len(body), body))
    tmpdata = s.recv(8192)
    while len(tmpdata) > 0:
        data += tmpdata
        tmpdata = s.recv(8192)
    s.close()
    return data
Run Code Online (Sandbox Code Playgroud)

然后稍后使用大尺寸的主体调用它,超过500,000字节.这将发送到Apache服务器,该服务器的最大请求大小为默认的8190字节.

我的问题是" s.sendall()"部分发生了什么?显然整个身体不能立即发送,我猜它是通过模数运算符减少的.不过,我不知道它在Python中是如何工作的.谁能解释一下?谢谢.

python networking

0
推荐指数
1
解决办法
233
查看次数

标签 统计

x86 ×3

assembly ×2

python ×2

c ×1

hex ×1

networking ×1

printing ×1

ruby ×1