在给定的字母表上将整数转换成字符串的算法

2024-04-26 06:21:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试实现一个算法,它可以将一个字库长的非负整数转换成给定字母表a和长度k的字符串,并按bigendian字节顺序:

enter image description here

在哪里

enter image description here

我的代码:

def ToString(x, k, A):       
    S = []
    N = len(A)  # N = |A|

    for i in reversed(range(0,k)):
        s_k = InverseRank(x % N,A,N,k,i)
        x = x // N
        S.insert(0,s_k)

    return S

def InverseRank(x,A,N,k,i):
    return A[(x//N**(k-i-1)) % N]

但是,它工作不正常。你知道吗

  A = ['A', 'B', 'C', 'D', 'E']   # Alphabet
  k = 3
  x = 123
  S = ToString(x,k,A)

结果:

  s => ['A', 'A', 'E']

不管我选择什么x,结果字符串只在最后一个字符中不同。前两个总是“A”


Tags: 字符串代码算法forlenreturn字节顺序
1条回答
网友
1楼 · 发布于 2024-04-26 06:21:01

您误解了“where”的解释。
表达式
S_Expression
函数的算法应该生成什么,而不是列s_k = InverseRank(x % N,A,N,k,i)中要使用的秩函数本身。你知道吗

一种解决方案是将s_k = InverseRank(x % N,A,N,k,i)更改为s_k = A[x % N]。你知道吗

相关问题 更多 >