C++经典编码汇总【学不会私信我】

目录

前言

1. ASCII编码

2. Unicode编码

3. Base64编码

总结


前言

在计算机科学中,编码是将信息转化为二进制数据的过程。编码是计算机通讯、储存和处理信息的基础,它使得人类可以通过计算机语言与计算机进行交互。本文将介绍几种经典的编码技术,包括ASCII编码、Unicode编码和Base64编码,并提供相应的示例代码。

1. ASCII编码

ASCII编码(American Standard Code for Information Interchange,美国信息交换标准代码)是一种最早出现的字符编码,它使用7个二进制位(即128个编码)来表示所有英文字母、数字和一些常用符号。ASCII编码通常被用于网络协议、电话传输、PC和主机之间的通讯等场景中。

示例代码如下:

void asciiEncode(string input) {
    for (int i = 0; i < input.length(); i++) {
        int code = input[i];
        cout << code << " ";
    }
}

2. Unicode编码

Unicode编码是一种用于字符编码的国际标准,它支持世界上所有已知的语言和符号系统,包括各种汉字、日语假名、希腊字母、西里尔字母等。Unicode编码将每个字符分配一个唯一的码位(code point),并使用1到4个字节不等的编码来表示码位。

示例代码如下:

void unicodeEncode(string input) {
    for (int i = 0; i < input.length(); i++) {
        int code = (int)input[i];
        cout << "U+" << hex << code << " ";
    }
}

3. Base64编码

Base64编码是一种将二进制数据转换为可打印字符的编码方式,它广泛应用于电子邮件、网页传输等场景中。Base64编码使用64个字符来表示二进制数据,其中包括26个大小写字母、10个数字和'+'、'/'两个符号。它将3个字节的二进制数据转换为4个可打印字符,不足3字节的二进制数据通过补0来进行转换。

示例代码如下:

const char base64Table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

string base64Encode(const unsigned char* data, size_t len) {
    string ret = "";

    for (size_t i = 0; i < len;) {
        uint32_t b = 0;
        int bits = 0;

        for (int j = 0; j < 3 && i < len; j++, i++) {
            b <<= 8;
            b |= data[i];
            bits += 8;
        }

        for (int j = 0; j < 4; j++) {
            if (bits > 0) {
                int idx = (b >> (bits - 6)) & 0x3F;
                ret += base64Table[idx];
                bits -= 6;
            }
            else {
                ret += '=';
            }
        }
    }

    return ret;
}

总结

本文介绍了几种经典的编码技术,包括ASCII编码、Unicode编码和Base64编码。这些编码技术在不同的场景下有不同的优势和适用性。选择合适的编码技术可以提高数据传输效率,降低错误率。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪子小院

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值