首页 > 其他分享 >【补充】字符与字节的区别

【补充】字符与字节的区别

时间:2023-08-19 17:44:05浏览次数:43  
标签:字符 UTF 字节 编码 解码 区别 字符串

  • 在计算机编程中,字符(Character)和字节(Byte)是两个有关数据表示和处理的重要概念。

【一】字符(Character):

  • 字符代表着某种可视或可打印的符号,例如字母、数字、标点符号、特殊符号等。
  • 在计算机内部,字符使用字符编码来表示,最常见的字符编码是 ASCII (American Standard Code for Information Interchange)。
  • ASCII 将每个字符映射到一个唯一的整数值,范围为 0 到 127,对应了基本的英文字母、数字和一些特殊字符。
  • 除了 ASCII,还有其他字符编码如 Unicode 和 UTF-8,它们可以表示更多的字符,包括国际字符集中的字符。

【二】字节(Byte):

  • 字节是计算机存储和传输数据的最小单位。
  • 一个字节由 8 个二进制位(bit)组成,可以表示 0 到 255 之间的整数。
  • 计算机以字节为基本单位存储和处理数据。在程序中,字节常用于表示二进制数据、图像、音频和视频等非文本类型的数据。
  • 在进行字符和字节之间的转换时,需要明确区分它们的含义和所代表的数据类型。

【三】字符串和字节转换:

  • 字符串到字节:
    • 将字符串转换为字节,通常称为编码(Encode)。
    • 编码操作可以根据字符编码方案将字符串转换为字节序列,例如将 Unicode 字符串转换为 UTF-8 字节序列。
  • 字节到字符串:
    • 将字节转换为字符串,通常称为解码(Decode)。
    • 解码操作是将字节序列按照特定的字符编码方案转换为对应的字符串,例如将 UTF-8 字节序列解码为 Unicode 字符串。

【四】编码和解码方案:

  • 不同的编码和解码方案被用于不同的字符串和字节转换需求。
    • 常见的编码和解码方案包括 ASCII、Unicode 和 UTF-8 等。
    • 选择合适的编码和解码方案取决于数据的特性和应用场景。
  • 总结来说
    • 字符和字节在计算机编程中起着不同的作用,在处理文本和二进制数据时需要正确地进行字符和字节之间的转换,并选择合适的编码和解码方案来满足需求。

【五】案例

示例一:字符串到字节的转换(编码)

  • 假设有一个字符串 "Hello, 世界!" ,我们将其转换为字节序列:
# 使用 UTF-8 编码将字符串转换为字节序列
string = "Hello, 世界!"
byte_sequence = string.encode('utf-8')

print(byte_sequence)
  • 输出结果:
b'Hello, \xe4\xb8\x96\xe7\x95\x8c\xef\xbc\x81'
  • 在这个例子中,我们使用 UTF-8 编码将字符串转换为字节序列。
  • encode() 方法将字符串按照指定的编码方案(这里是 UTF-8)转换为字节序列。
  • 输出结果中的 b 前缀表示这是一个字节序列,后面的一串数字是字节的十六进制表示。

示例二:字节到字符串的转换(解码)

  • 假设有一个字节序列 b'Hello, \xe4\xb8\x96\xe7\x95\x8c\xef\xbc\x81' ,我们将其解码为字符串:
# 使用 UTF-8 解码将字节序列转换为字符串
byte_sequence = b'Hello, \xe4\xb8\x96\xe7\x95\x8c\xef\xbc\x81'
string = byte_sequence.decode('utf-8')

print(string)
  • 输出结果:
Hello, 世界!
  • 在这个例子中,我们使用 UTF-8 解码将字节序列转换为字符串。
    • decode() 方法按照指定的解码方案(这里是 UTF-8)将字节序列解码为字符串。
    • 输出结果即为解码后的字符串。
  • 这些示例演示了如何使用编码和解码操作进行字符串和字节之间的转换。
    • 要根据具体需求选择合适的编码和解码方案,并保证编码和解码的一致性,以避免数据丢失或产生乱码等问题。

标签:字符,UTF,字节,编码,解码,区别,字符串
From: https://www.cnblogs.com/dream-ze/p/17642790.html

相关文章

  • KMP 字符串匹配 学习笔记
    前言最近才发现自己写了后缀数组,但并没有其他的字符串算法,今天先把\(KMP\)字符串匹配先讲一下。算法核心对于字符串匹配,最朴素的方法就是一个字符一个字符地匹配,找到不同的就直接换一个地方匹配。我们先来看一组样例:\(ababababe\)\(ababe\)对于这组样例,暴力的方法就是直......
  • gcc make cmake ninja的区别
    理清C++编译过程用到的工具概念ref:GCC、CMake、CMakelist、Make、Makefile、Ninja啥关系?一图讲透!-知乎(zhihu.com)早先学C++的时候,因为只需要点击IDE的运行按钮,程序就可以跑起来,写过最复杂的只不过是几个文件的学生管理系统。现在要重新拾起C++,看的项目和之前的不可同日而......
  • Future和Isolate有什么区别?
    future是异步编程,调用本身立即返回,并在稍后的某个时候执行完成时再获得返回结果。在普通代码中可以使用await等待一个异步调用结束。 isolate是并发编程,isolate是有自己的内存和单线程控制的运行实体。isolate本身的意思是“隔离”Dart是单线程,Dart为我们提供了isolate,i......
  • Linux 系统替换字符串常用命令
    概述在Linux系统中有时候我们需要替换某个很长的字符串或者修改某个配置参数,有些文件又隐藏目录比较深,有些场景也需要在一个目录下批量去修改文件,那应该怎么高效,快速的去完成修改呢?下面记录一下本人实施过程中的一些方法,做个备忘手稿分享以备随时查看。系统平台CentOSLinux7第......
  • Oracle 12C 新特性-扩展数据类型,在12c中,与早期版本相比,诸如VARCHAR2, NAVARCHAR2以及
    1.查看参数max_string_size默认值SQL>showparametermax_string_sizeNAME                   TYPE                 VALUE---------------------------------------------------------------------......
  • 【LeetCode2199. 找到每篇文章的主题】字符串处理题,使用MySQL里的group_concat和LOCAT
    题目地址https://leetcode.cn/problems/finding-the-topic-of-each-post/description/代码witht1as(selectp.*,k.*fromPostspleftjoinKeywordskonLOCATE(LOWER(CONCAT('',word,'')),LOWER(CONCAT('',conte......
  • fastjson对接口参数的某个字段不打印输出,如文件的base64字符串
    fastjson对接口参数的某个字段不打印输出,如文件的base64字符串packagecom.example.core.mydemo.json5;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.annotation.JSONField;/**需要提供getset方法,如果使用@Datalombok不生效(关键)**publicclassIte......
  • httpGet和httpPost区别
    简单讲讲:Get一般用于从服务器取数据,而且不改变原来的内容;Post一般用于向服务器传递数据,这需要改变服务器的内容。从安全性上考虑,Get的安全性要稍微差点,因为它会把信息直接在地址栏显示出来。但如果对信息的安全性要求比较高的话,优先考虑使用Post。综合,如果没有特殊需要,用Get,......
  • url函数和path函数的区别??
    在Django中,path()和url()都是用于定义URL路由的函数,但它们有一些区别:path()函数:path()函数是Django2版本中引入的新函数,用于定义URL路由。它使用简单的字符串匹配来匹配URL,不支持正则表达式。在path()中,斜杠/被用作路径分隔符,而不需要使用正则表达式中......
  • iwebsec-sql注入 06 宽字节字符型注入
    01、题目分析宽字节字符型注入,因为源代码中传参get值的时候,有一个addslashes()函数,是返回在预定义字符('")之前添加反斜杠的字符串。也就是说,当我们按照正常的字符型注入的时候,会在'前加入,也就是说,我们在url上--url写入?id=1'orderby3--+--在addslashes(1'order......