0

我为我们的项目制作了自定义二进制导出器,我在使用 python 时遇到了奇怪的情况。

简要代码是这样的,这个代码是当前数据到二进制。

    ... 
    nBSVtx = struct.pack("i",bob.number_of_blending_vertices)
    nVtx = struct.pack("i",bob.number_of_vertices)
    nFIdx = struct.pack("i",bob.number_of_faces)
    bNml = struct.pack("?",NORMAL)
    bUV = struct.pack("?",NORMAL)
    nBS = struct.pack("i",bob.number_of_blendshapes)
    f.write(nBSVtx)
    f.write(nVtx)
    f.write(nFIdx)
    f.write(bNml)
    f.write(bUV)
    f.write(nBS)

    for bs_name in blendshape_name_list:
        s = struct.Struct(str(len(bs_name))+"s")
        f.write(struct.pack("i",len(bs_name)))
        f.write(s.pack(str(bs_name)))

    print binascii.hexlify(nBSVtx)
    print binascii.hexlify(nVtx)
    print binascii.hexlify(nFIdx)
    print binascii.hexlify(bNml)
    print binascii.hexlify(bUV)
    print binascii.hexlify(nBS)
    ...

但是,调试结果(使用打印)是

2805
2930
5700
f50a0000
720b0000
44160000
01
01
05000000

但在二进制文件中,值与前一个不同。它必须是'f50a0000',但现在是'3f0a0000' 其他东西都很好。为什么会出现这种现象?

1 0000000: 3f0a 0000 720b 0000 4416 0000 0101 0500  ?...r...D.......
2 0000010: 0000 0600 0000 7242 6c69 6e6b 0600 0000  ......rBlink....
3 0000020: 6c42 6c69 6e6b 0600 0000 6c53 6d69 6c65  lBlink....lSmile
4 0000030: 0600 0000 7253 6d69 6c65 0400 0000 6f70  ....rSmile....op
5 0000040: 656e 3f3f 1d3f 093f 6741 3f58 3f3f 3f3f  en??.?.?gA?X????
6 0000050: 1d3f 4711 7541 3f3f 063f 3f3f 3f23 7747  .?G.uA??.????#wG
7 0000060: 6f41 3f53 3f3f 3f3f 1d3f 1e3f 7e41 1a3a  oA?S????.?.?~A.:
8 0000070: 553f 3f3f 1d3f 1e3f 7e41 1a3a 553f 3f3f  U???.?.?~A.:U???
9 0000080: 1d3f 782e 3f41 3f5f 403f 3f3f 1d3f 782e  .?x.?A?_@???.?x.
10 0000090: 3f41 3f5f 403f 3f3f 1d3f 5b71 7c41 5f4b  ?A?_@???.?[q|A_K
11 00000a0: 6b3f 3f3f 1d3f 5b71 7c41 5f4b 6b3f 3f3f  k???.?[q|A_Kk???
12 00000b0: 1d3f 2c3f 7d41 012d 2c3f 3f3f 1d3f 2c3f  .?,?}A.-,???.?,?
13 00000c0: 7d41 012d 2c3f 3f3f 3f23 3f3f 7641 6119  }A.-,????#??vAa.
14 00000d0: 3f3f 3f3f 3f23 3f3f 7641 6119 3f3f 0000  ?????#??vAa.??..
4

0 回答 0