Dou*_*las 8 c c++ python huffman-code
我一直在尝试将这段代码移植到python中,但是我在C++中有一些我不太了解的东西(我确实知道一些C++,但这超出了我的范围):
typedef struct huffnode_s
{
struct huffnode_s *zero;
struct huffnode_s *one;
unsigned char val;
float freq;
} huffnode_t;
Run Code Online (Sandbox Code Playgroud)
我没有得到的是huffnode_s本身是如何形成的,我以前从未见过它并且不太了解它.这是什么意思,如果有人可以,那python等同于什么?
S.L*_*ott 11
这个.
class Huffnode(object):
def __init__(self, zero, one, val, freq):
"""zero and one are Huffnode's, val is a 'char' and freq is a float."""
self.zero = zero
self.one = one
self.val = val
self.freq = freq
Run Code Online (Sandbox Code Playgroud)
然后,您可以将各种C函数重构为此类的方法.
或许这个.
from collections import namedtuple
Huffnode = namedtuple( 'Huffnode', [ 'zero', 'one', 'val', 'freq' ] )
Run Code Online (Sandbox Code Playgroud)
如果您希望C函数保持功能.
而已.
h0 = Huffnode(None, None, 'x', 0.0)
h1 = Huffnode(None, None, 'y', 1.0)
h2 = Huffnode(h0, h1, 'z', 2.0)
Run Code Online (Sandbox Code Playgroud)
这就是所需要的.
它本身没有结构。它有一个指向该结构的指针。
在内存中struct huffnode_s看起来像(32 位机器):
|------------------ huffnode_s* 零 - 4 字节 --------------|
|------------------ huffnode_s* 1 - 4 字节----------------|
|unsigned char val - 1 字节 + 3 字节填充=======|
|------------------- 浮点频率 - 4 字节 ------------------------- |
这些大小会因机器而异,并且它在内存中的外观由编译器决定。
| 归档时间: |
|
| 查看次数: |
888 次 |
| 最近记录: |