Python实现字符串与字节之间的相互转换

本文旨在说明如何使用的Python对字符串中的字符进行编码和解码。

下面是一个最近做到的编程题,题目的详细叙述如下:

在GBK编码下,请编写一个截取字符串的函数, 输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,同时忽略字符串中的数字后输出最终结果。

输入描述:

一行字符串和待截取的字符串

输入描述:

单独一行截取的字符串

示范:

输入:
中zhong
4

输出:
中zh

其中需要考察到字符串的编码和解码的知识。
GBK采用双字节表示,总体编码范围为 8140-FEFE 之间,首字节在 81-FE 之间,尾字节在 40-FE 之间。

掌握了上述的知识,就可以解决上面的问题。

python中讲字符串转换为字节(以编码GBK编码为例):

string = bytes(input_string,encoding='gbk')

反过来将字节转换为字符串:

result = str(string, encoding='gbk')

具体的代码如下:


input_string = input()
input_num = input()

string = bytes(input_string,encoding='gbk')
s_len = int(input_num)
# print(len(string))
# print(string[:1])
if len(string) == 0 or s_len <= 0:
    result = str(string, encoding='gbk')
    # print(string.decode('gbk'))
elif len(string)==0 or s_len >= len(string):
    result = str(string, encoding='gbk')
elif s_len < len(string):
    len_num = 0
    while len_num < s_len:
        tmp_c = string[len_num]
        # print(tmp_c)
        if tmp_c > 32 and tmp_c <= 127:
            len_num += 1
            continue
        tmp_nextc = string[len_num + 1]
        if (tmp_c >= 161 and tmp_c <=255) or (tmp_nextc >= 128 and tmp_nextc<=255):
            len_num += 2
            continue
        else:
            len_num += 1
        break
    tmp = string[0:len_num]
    result = str(tmp, encoding='gbk')

print(result)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值