Hướng dẫn how do i get the ascii value of an integer in python? - làm cách nào để lấy giá trị ascii của một số nguyên trong python?

Tôi đang làm việc để tạo một bộ rút ngắn URL cho trang web của mình và kế hoạch hiện tại của tôi [tôi đang mở các đề xuất] là sử dụng ID nút để tạo URL rút ngắn. Vì vậy, về lý thuyết, nút 26 có thể là short.com/z, nút 1 có thể là short.com/a, nút 52 có thể là short.com/Z và nút 104 có thể là short.com/ZZ. Khi người dùng truy cập URL đó, tôi cần đảo ngược quy trình [rõ ràng].

Tôi có thể nghĩ về một số cách kludgy để đi về điều này, nhưng tôi đoán có những cách tốt hơn. Bất kỳ đề xuất?

hỏi ngày 9 tháng 9 năm 2010 lúc 2:47Sep 9, 2010 at 2:47

Mlissnermlissnermlissner

16.5K17 Huy hiệu vàng97 Huy hiệu bạc164 Huy hiệu đồng17 gold badges97 silver badges164 bronze badges

0

Ascii to int:

ord['a']

cho 97

Và trở lại một chuỗi:

  • Trong Python2:
    >>> ord["a"]
    97
    >>> chr[97]
    'a'
    
    0
  • Trong Python3:
    >>> ord["a"]
    97
    >>> chr[97]
    'a'
    
    1

cho

>>> ord["a"]
97
>>> chr[97]
'a'
2

Mike t

39K17 Huy hiệu vàng147 Huy hiệu bạc190 Huy hiệu Đồng17 gold badges147 silver badges190 bronze badges

Đã trả lời ngày 9 tháng 9 năm 2010 lúc 2:51Sep 9, 2010 at 2:51

Dominic Bou-Samradominic Bou-SamraDominic Bou-Samra

14.2K26 Huy hiệu vàng97 Huy hiệu bạc153 Huy hiệu đồng26 gold badges97 silver badges153 bronze badges

4

>>> ord["a"]
97
>>> chr[97]
'a'

Đã trả lời ngày 28 tháng 6 năm 2015 lúc 5:03Jun 28, 2015 at 5:03

Renatovrenatovrenatov

4.9056 Huy hiệu vàng30 Huy hiệu bạc38 Huy hiệu Đồng6 gold badges30 silver badges38 bronze badges

Nếu nhiều ký tự bị ràng buộc bên trong một số nguyên/dài, cũng như vấn đề của tôi:

s = '0123456789'
nchars = len[s]
# string to int or long. Type depends on nchars
x = sum[ord[s[byte]]8*[nchars-byte-1]]&0xFF] for byte in range[nchars]]

Năng suất

>>> ord["a"]
97
>>> chr[97]
'a'
3 và
>>> ord["a"]
97
>>> chr[97]
'a'
4

Đã trả lời ngày 28 tháng 2 năm 2017 lúc 0:38Feb 28, 2017 at 0:38

1

Điều gì về Base58 mã hóa URL? Giống như ví dụ Flickr làm.

# note the missing lowercase L and the zero etc.
BASE58 = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ' 
url = ''
while node_id >= 58:
    div, mod = divmod[node_id, 58]
    url = BASE58[mod] + url
    node_id = int[div]

return '//short.com/%s' % BASE58[node_id] + url

Biến điều đó trở lại thành một con số cũng không phải là vấn đề lớn.

Đã trả lời ngày 9 tháng 9 năm 2010 lúc 3:53Sep 9, 2010 at 3:53

Ivo Wetzelivo WetzelIvo Wetzel

45,9K15 Huy hiệu vàng97 Huy hiệu bạc110 Huy hiệu đồng15 gold badges97 silver badges110 bronze badges

1

Sử dụng

>>> ord["a"]
97
>>> chr[97]
'a'
5 và
>>> ord["a"]
97
>>> chr[97]
'a'
6. Có các lựa chọn khác. Base32 mã hóa ID của bạn cũng có thể hoạt động, nhưng tôi không biết rằng có bất kỳ thư viện nào không mã hóa Base32 được tích hợp thành Python.

Rõ ràng một bộ mã hóa Base32 đã được giới thiệu trong Python 2.4 với mô -đun Base64. Bạn có thể thử sử dụng

>>> ord["a"]
97
>>> chr[97]
'a'
7 và
>>> ord["a"]
97
>>> chr[97]
'a'
8. Bạn nên cung cấp
>>> ord["a"]
97
>>> chr[97]
'a'
9 cho cả hai tùy chọn
s = '0123456789'
nchars = len[s]
# string to int or long. Type depends on nchars
x = sum[ord[s[byte]]8*[nchars-byte-1]]&0xFF] for byte in range[nchars]]
0 và
s = '0123456789'
nchars = len[s]
# string to int or long. Type depends on nchars
x = sum[ord[s[byte]]8*[nchars-byte-1]]&0xFF] for byte in range[nchars]]
1 cho
>>> ord["a"]
97
>>> chr[97]
'a'
8 trong trường hợp mọi người viết ra các URL rút ngắn của bạn.

Thật ra, tôi lấy lại điều đó. Tôi vẫn nghĩ rằng mã hóa Base32 là một ý tưởng tốt, nhưng mô -đun đó không hữu ích cho trường hợp rút ngắn URL. Bạn có thể xem xét việc triển khai trong mô -đun và tự làm cho trường hợp cụ thể này. :-]

Đã trả lời ngày 9 tháng 9 năm 2010 lúc 2:50Sep 9, 2010 at 2:50

OmnifarityomnifyingOmnifarious

53K18 Huy hiệu vàng129 Huy hiệu bạc191 Huy hiệu Đồng18 gold badges129 silver badges191 bronze badges

Rõ ràng là tôi đến trễ bữa tiệc, Jus muốn chia sẻ một đoạn trích mà tôi sử dụng rất thường xuyên.

/**
 * 62 = 26 + 26 +10
 *
 * @param id
 * @return
 */
public String base62[long id] {
    StringBuilder sb = new StringBuilder[];
    while [id >= 62] {
        int remainer = [int] [id % 62];
        id = id / 62;
        sb.append[index2char[remainer]];
    }
    sb.append[index2char[id]];

    return sb.reverse[].toString[];
}

public long reverseBase62[String s] {
    long r = 0;
    for [int i = 0; i < s.length[]; i++] {
        r = r * 62;
        int index = char2index[s.charAt[i]];
        if [index == -1] {
            throw new IllegalArgumentException[
                String.format["[%s] is in malformation, should only contain 0~9, a~z, A~Z", s]];
        }
        r += index;
    }

    return r;
}
private char index2char[long index] {
    if [index < 10] {
        return [char] ['0' + index];
    }
    if [index < 36] {
        return [char] ['a' + index - 10];
    }
    return [char] ['A' + index - 36];
}



private int char2index[char c] {
    if ['0' 

Bài Viết Liên Quan

Chủ Đề