2

古いアプリを移植して更新していて、この機能に出会いました。詳しく知りたいのですが、名前がわかりません。人気のある名前だと思います。誰か知っていますか?

このバージョンは Python ですが、もともとは Java でした。

def encode(msg): # msg is a string

  msg_len = len(msg)
  j = (msg_len + 6) / 7
  k = 0

  cbytesOutput = [ctypes.c_byte(0)]*(msg_len + j) # return is msg length + j bytes long

  for l in xrange(j):
    i1 = l * 8
    j1 = i1
    byte0 = ctypes.c_byte(-128)
    byte1 = ctypes.c_byte(1)
    k1 = 0
    while k1 < 7 and k < msg_len:
        byte2 = ctypes.c_byte(ord(msg[k]))
        if (byte2.value & 0xffffff80) != 0:
            byte0 = ctypes.c_byte(byte0.value | byte1.value)
        j1 += 1
        cbytesOutput[j1] = ctypes.c_byte(byte2.value | 0xffffff80)
        byte1 = ctypes.c_byte(byte1.value << 1)
        k += 1
        k1 += 1

    cbytesOutput[i1] = byte0

  return cbytesOutput

一般的なアルゴリズムに関するコメントはありますか? 買い替えようと思っています。Profiler によると、これはアプリ全体で最悪の関数であり (最も遅いコード パスで 60% の時間)、データも肥大化します。

ありがとう

4

0 に答える 0