ascii和hex的区别

时间: 2024-06-21 18:00:44 浏览: 613

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种基于拉丁字母的一套电脑编码系统,它将每个字符映射到一个7位或8位的二进制数。ASCII码主要用于英文和其他西文字符,共包含128个字符,包括大写和小写字母、数字、标点符号等。

Hex(十六进制),全称是“十六进制数”,是一种逢16进1的进位制计数法,用0-9和A-F这16个符号表示数值,其中A-F分别代表十进制的10-15。在计算机中,二进制数据通常会被转换为十六进制来展示,便于理解和记忆,特别是当处理颜色、内存地址、十六进制字符串等二进制数据时。

区别总结如下:

  1. ASCII是对字符的编码,侧重于文本表示,而Hex是对二进制数据的表示方式。
  2. ASCII码字符数量较少,主要用于拉丁字母;Hex则可以表示更广泛的二进制数值范围。
  3. ASCII码是基础的字符编码,Hex是数据转换工具,用于展示和处理二进制数据。
相关问题

C语言字符转ASCII和hex

C语言中的字符通常对应ASCII码,这是一个基于拉丁字母的一字节编码系统,用于表示各种字符,包括数字、英文大小写字母以及一些特殊符号。每个字符都有一个唯一的ASCII值,这个值是以十进制表示的整数。

例如,字母'a'的ASCII值是97,空格的ASCII值是32。如果你想将字符转换为对应的ASCII值,可以使用int类型的变量,并利用算术运算符进行存储。例如:

char c = 'a';
int ascii_value = (int)c; // 将字符转换为ASCII值
printf("The ASCII value of '%c' is %d\n", c, ascii_value);

至于将ASCII值转换为十六进制,你可以直接打印出ASCII值,因为大多数编程环境会自动将其显示为十六进制。如果你想要手动转换,可以先计算其十六进制值,然后使用格式化字符串如"%x"输出:

int ascii_int = 97;
printf("The hexadecimal value of %d is %x\n", ascii_int, ascii_int);

c语言ascii转hex

您好!感谢您对ChitGPT的兴趣。针对您的问题,我提供以下回答:

在C语言中,可以使用sprintf函数将ASCII字符串转换为十六进制数。例如:

#include <stdio.h>

int main() {
    char ascii_str[] = "Hello World!";
    char hex_str[22];

    for (int i = 0; i < sizeof(ascii_str); i++) {
        sprintf(&hex_str[i*2], "%02x", ascii_str[i]);
    }

    printf("ASCII string: %s\n", ascii_str);
    printf("Hex string: %s\n", hex_str);

    return 0;
}

此代码将输出:

ASCII string: Hello World!
Hex string: 48656c6c6f20576f726c6421

这是将ASCII字符串“Hello World!”转换为十六进制字符串的示例。请注意,由于每个ASCII字符被表示为两个十六进制数字,因此hex_str数组的大小必须为ascii_str数组大小的两倍。如果你有任何其他问题,欢迎再次询问!

向AI提问 loading 发送消息图标

相关推荐

大家在看

recommend-type

LTE Signaling & Protocol Analysis Focus: E-UTRAN and UE

非常不错,采用问答的方式来学习LTE和EPC,本章主要关注于UE和RAN部分。 This eBook is a must for everybody who requires a detailed understanding of the protocols and signaling procedures within E-UTRAN and the EPC. In that respect the clear focus of this course is on the protocols of the UE and the E-UTRAN. The eBook starts with a review of the LTE physical layer and the concepts and protocol stacks of E-UTRAN. This part concludes with the review of the EPS network architecture. Immediately afterwards we jump into real-life call flows and scenarios and confront the student with the look & feel of the LTE protocol suite. This part ends with an assessment of what will be the focus of the following chapters. The next chapters are dedicated to the different protocols EMM, ESM, MAC, RLC, RRC, S1-AP, X2-AP, SGs-AP and S101-AP. The eBook concludes with the presentation and analysis of LTE signaling flows and real-life call flows.
recommend-type

任务执行器-用于ad9834波形发生器(dds)的幅度控制电路

7.2 任务执行器 堆垛机 概述 堆垛机是一种特殊类型的运输机,专门设计用来与货架一起工作。堆垛机在两排货架间的巷 道中往复滑行,提取和存入临时实体。堆垛机可以充分展示伸叉、提升和行进动作。提升和 行进运动是同时进行的,但堆垛机完全停车后才会进行伸叉。 详细说明 堆垛机是任务执行器的一个子类。它通过沿着自身x轴方向行进的方式来实现偏移行进。它 一直行进直到与目的地位置正交,并抬升其载货平台。如果偏移行进是要执行装载或卸载任 务,那么一完成偏移,它就会执行用户定义的装载/卸载时间,将临时实体搬运到其载货平 台,或者从其载货平台搬运到目的位置。 默认情况下,堆垛机不与导航器相连。这意味着不执行行进任务。取尔代之,所有行进都采 用偏移行进的方式完成。 关于将临时实体搬运到堆垛机上的注释:对于一个装载任务,如果临时实体处于一个不断刷 新临时实体位置的实体中,如传送带时,堆垛机就不能将临时实体搬运到载货平台上。这种 情况下,如果想要显示将临时实体搬运到载货平台的过程,则需确保在模型树中,堆垛机排 在它要提取临时实体的那个实体的后面(在模型树中,堆垛机必须排在此实体下面)。 除了任务执行器所具有的标准属性外,堆垛机具有建模人员定义的载货平台提升速度和初始 提升位置。当堆垛机空闲或者没有执行偏移行进任务时,载货平台将回到此初始位置的高度。 332 美国Flexsim公司&北京创时能科技发展有限公司版权所有【010-82780244】
recommend-type

不同拉压模量弹性力学问题研究的新进展

不同拉压模量弹性力学问题研究的新进展,赵慧玲,叶志明,拉压不同模量弹性体具有材料非线性特征,不同模量本构关系受到材料本身及结构各点的应力、应变状态等因素的综合影响。本文总结了
recommend-type

【管道瞬变流】特征线法管道瞬变流计算【含Matlab源码 2773期】.zip

Matlab领域上传的全部代码均可运行,亲测可用,尽我所能,为你服务; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、物理应用 仿真:导航、地震、电磁、电路、电能、机械、工业控制、水位控制、直流电机、平面电磁波、管道瞬变流、刚度计算 光学:光栅、杨氏双缝、单缝、多缝、圆孔、矩孔衍射、夫琅禾费、干涉、拉盖尔高斯、光束、光波、涡旋 定位问题:chan、taylor、RSSI、music、卡尔曼滤波UWB 气动学:弹道、气体扩散、龙格库弹道 运动学:倒立摆、泊车 天体学:卫星轨道、姿态 船舶:控制、运动 电磁学:电场分布、电偶极子、永磁同步、变压器
recommend-type

天线测试手册

能不说么?实在是没说的了。其实就这点了,真的,实在没说的了

最新推荐

recommend-type

Dsp28335与FPGA并行通信:高速数据传输与接收,实现PWM外扩功能的高效协同处理,Dsp28335 与FPGA的并行通信(最高速率150MHZ),可以将DSP数据传给FPGA的指定位置,以及从

Dsp28335与FPGA并行通信:高速数据传输与接收,实现PWM外扩功能的高效协同处理,Dsp28335 与FPGA的并行通信(最高速率150MHZ),可以将DSP数据传给FPGA的指定位置,以及从FPGA的指定位置读取数据到DSP。 对于DSP利用FPGA来外扩PWM非常实用方便 ,核心关键词:Dsp28335; FPGA; 并行通信; 高速率; 数据传输; DSP数据; 指定位置; PWM外扩。,DSP28335与FPGA高速通信:数据传输与外扩PWM的实用方案
recommend-type

Eclipse环境下Android progressBar操作指南

在Android开发中,ProgressBar是一个常用的界面组件,主要用于向用户显示一个操作正在进行中,以及处理该操作的进度。基于Eclipse的Android开发环境,开发者可以通过XML布局文件或Java代码来操作ProgressBar,实现进度条的显示、更新等功能。本文将详细阐述如何在基于Eclipse的Android开发环境中操作ProgressBar,包括ProgressBar的基本使用方法和一些高级特性。 ### ProgressBar的基本概念和类型 ProgressBar在Android中主要有两种表现形式,一种是圆形进度条,另一种是水平进度条。开发者可以根据应用场景选择合适的类型。 - **圆形进度条(Circular Progress Bar)**:通常用于表示正在加载的过程,不显示具体的进度百分比,强调的是一个持续的过程,直到完成。 - **水平进度条(Horizontal Progress Bar)**:显示具体的进度百分比,多用于文件下载、数据上传等场景,用户可以直观看到操作进度的百分比。 ### 如何在Eclipse中使用ProgressBar 在Eclipse中使用ProgressBar分为两个主要步骤:首先是将ProgressBar添加到布局中,其次是通过编程控制ProgressBar的进度。 #### 在XML布局文件中定义ProgressBar 首先,在项目的`res/layout`目录下的XML布局文件中定义ProgressBar,可以通过指定其属性来设置ProgressBar的样式、最大值和初始进度。以下是一个添加水平进度条到布局的示例: ```xml <ProgressBar android:id="@+id/progress_horizontal" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="0" /> ``` 在上述代码中,`android:id`属性为ProgressBar设置了一个唯一的ID,以便在Java代码中引用。`style`属性设置为水平进度条的样式,`layout_width`和`layout_height`分别定义了进度条的宽度和高度,`max`属性设置了进度条的最大值,`progress`属性设置了初始进度。 #### 在Java代码中控制ProgressBar 在Activity或Fragment的Java代码中,可以通过ID引用ProgressBar,并调用相应的方法来控制进度。 ```java // 获取ProgressBar实例 ProgressBar progressBar = (ProgressBar) findViewById(R.id.progress_horizontal); // 更新进度条的进度值 progressBar.setProgress(50); // 也可以使用增量方式更新进度 progressBar.incrementProgressBy(10); ``` 在上述代码中,`findViewById`方法用于获取布局文件中定义的ProgressBar实例。`setProgress`方法用于设置ProgressBar的当前进度值,而`incrementProgressBy`方法则用于以增量的形式更新进度。 ### 更新ProgressBar的进度 在实际的应用中,ProgressBar的进度通常在异步任务(如下载文件、加载数据等)中动态更新。在Eclipse开发环境中,我们通常使用`AsyncTask`来处理耗时的后台任务,同时在任务的运行过程中更新UI(包括ProgressBar)。 以下是使用`AsyncTask`来更新ProgressBar进度的一个简单示例: ```java private class DownloadTask extends AsyncTask<Void, Integer, Void> { protected void onPreExecute() { super.onPreExecute(); // 在任务开始前显示ProgressBar progressBar.setVisibility(View.VISIBLE); } protected Void doInBackground(Void... params) { // 执行后台任务,例如下载文件,并在过程中更新进度 for (int i = 0; i <= 100; i++) { // 模拟耗时操作 try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } // 更新进度 publishProgress(i); } return null; } protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); // 更新UI中的ProgressBar进度 progressBar.setProgress(values[0]); } protected void onPostExecute(Void result) { super.onPostExecute(result); // 任务完成后隐藏ProgressBar progressBar.setVisibility(View.GONE); } } ``` 在上述`AsyncTask`示例中,`onPreExecute`方法在任务开始前执行,可以在这里显示ProgressBar。`doInBackground`方法在后台线程执行,完成实际的耗时操作,并通过调用`publishProgress`方法通知进度更新。`onProgressUpdate`方法则在UI线程中执行,接收进度更新并调用`setProgress`方法更新ProgressBar。最后,在`onPostExecute`方法中可以处理任务完成后的逻辑,比如隐藏ProgressBar。 ### 高级特性 ProgressBar组件除了能够显示简单的进度之外,还可以设置一个进度条的样式,或者在进度条上显示文字。例如: ```xml <ProgressBar android:id="@+id/progress_with_text" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="0" android:progressDrawable="@drawable/custom_progress_bar" android:indeterminate="false" android:secondaryProgress="50" android:layout_marginTop="20dp" /> ``` 在上述代码中,`progressDrawable`属性可以设置一个自定义的进度条样式。`indeterminate`属性设置为`false`表示进度条将显示具体的进度值,`true`则显示不确定的滚动动画。`secondaryProgress`属性设置第二条进度条的颜色和值,通常用于显示缓冲的进度。 ### 总结 在基于Eclipse的Android开发中,ProgressBar提供了一种有效的方式向用户展示操作进度。通过XML布局文件或Java代码,开发者可以灵活地控制ProgressBar的表现形式和行为。此外,结合`AsyncTask`等工具,可以在异步任务中实时更新ProgressBar的进度,以提供流畅的用户体验。掌握ProgressBar的使用,对于开发用户友好且响应迅速的应用至关重要。
recommend-type

【Visio效率提升秘籍】:深入挖掘Visio资源库的10大高效利用技巧!

# 摘要 本文全面介绍了Visio资源库的概述、基础应用、高级技巧以及实践应用。从形状和模板的基础知识到内置图形和组件的高效使用,再到自定义图形与形状库的管理,本文深入探讨了Visio资源库的基础应用。进一步地,本文揭示了跨项目共享和管理资源库的策略,以及流程图、组织结构图和网络图在实践中的优化设计和构建方法。最后,文章探索了Visio资源库的进阶应用,包括与外部数据源的集成和A
recommend-type

Usage: yolo [OPTIONS] COMMAND [ARGS]... Try 'yolo -h' for help. Error: No such command 'predict'.怎么修改

这个错误提示表明您在使用YOLO(一个流行的目标检测模型)时遇到了问题。根据错误信息,您似乎尝试使用了一个不存在的命令'predict'。以下是一些可能的解决方案: 1. 检查命令拼写: 确保您输入的命令是正确的。YOLO的常用命令包括'train'、'detect'等,而不是'predict'。 2. 更新YOLO版本: 您可能使用的是较旧版本的YOLO。在终端中运行'yolo -h'查看可用的命令列表。如果'predict'不在列表中,可能需要更新到最新版本的YOLO。 3. 使用替代命令: 如果您想进行预测,可能需要使用'detect'命令而不是'predict'
recommend-type

基于jquery的全屏幻灯片切换实现方法

从提供的文件信息中,我们可以提取出以下知识点: ### 技术知识点 1. **jQuery使用**: - jQuery是一个快速、小型且功能丰富的JavaScript库,它使得HTML文档遍历和操作、事件处理、动画和Ajax变得更加简单。 - 点击事件处理:在jQuery中,点击事件可以通过`.click()`方法绑定到元素上,以响应用户的点击动作。 - 动画效果:jQuery提供了丰富的动画方法,比如`.fadeIn()`, `.fadeOut()`, `.slideDown()`等,用于实现元素的显示和隐藏效果。 2. **全屏幻灯片实现**: - 全屏幻灯片是一种常见的网页展示方式,用于在网页中展示图片或者视频等内容,并且支持用户交互的向前、向后切换。 - 实现全屏幻灯片通常需要处理图片的加载、切换、缩放、居中显示以及响应式布局等问题。 3. **JavaScript特效开发**: - JavaScript特效开发是指利用JavaScript语言开发网页上能够给用户提供视觉和交互体验的动态效果。 - 焦点图(焦点轮播图)是一种常见的特效,可以突出展示主要元素,一般用于网页首屏或广告位。 ### 实现细节 1. **图片切换逻辑**: - 用户点击小图后,需要通过JavaScript获取到点击的图片,并根据其索引或其他属性确定大图内容。 - 弹出全屏图片,通常是通过创建一个新的页面元素(如`<div>`)或者修改现有元素的样式来实现。 - 在大图显示的同时,应当有一个机制用于控制图片的切换,比如点击箭头、触摸滑动等。 2. **全屏实现方法**: - 在现代浏览器中,全屏API允许网页通过编程方式让一个元素进入全屏模式。 - 在桌面浏览器中全屏通常意味着覆盖整个浏览器窗口,在移动设备上则可能是填充整个屏幕。 - 全屏切换通常涉及到监听全屏状态变化的事件,以及提供用户退出全屏的机制。 3. **响应式布局**: - 响应式布局是指网页设计能够对不同尺寸的设备屏幕作出响应,自动调整布局和内容以提供最佳的浏览体验。 - 实现响应式布局,可以使用媒体查询(Media Queries),灵活使用CSS的百分比、视口单位(vw/vh)、弹性盒子(Flexbox)和网格布局(Grid)等技术。 ### 相关代码解析 虽然文件名列表只提供了一个数字“129”,没有具体的文件名,但我们可以推测一些可能包含的文件类型: - `index.html`:包含幻灯片功能的HTML文件。 - `style.css`:包含幻灯片样式定义的CSS文件。 - `script.js`:包含jQuery以及幻灯片切换逻辑的JavaScript文件。 - `jquery.min.js`:压缩的jQuery库文件,用于实现快速的DOM操作和事件处理。 ### 标签解释 1. **JS特效-焦点/幻灯图**: - 这个标签描述了该代码的主要功能是关于JavaScript特效,特别是用于创建焦点图或者幻灯片效果。 - 使用标签便于在资源库、代码分享平台或搜索引擎中快速定位到相关的资源或示例代码。 根据以上信息,该zip压缩包文件应该包含了实现点击小图弹出全屏幻灯片所需的所有相关文件和代码。用户可以下载该zip文件,解压后直接在自己的网站或项目中使用或进一步定制这个幻灯片功能。
recommend-type

NTSYS遗传分析必备:从基础到高级应用的全指南

# 摘要 本文全面介绍了NTSYS软件在遗传分析中的应用。首先概述了NTSYS的基本功能和遗传数据分析的基础知识,包括基因型数据的处理、遗传距离及相似性度量和群体结构分析。接着,详细探讨了NTSYS的高级分析技术,如系统发育树构建、多元统计分析和分子标记辅助选择。第四章分析了NTSYS在遗传多样性研究、连锁图谱构建和
recommend-type

cmpb %al,%dl是如何比较的

cmpb %al,%dl 是一条汇编指令,用于比较两个8位寄存器中的值。具体来说,这条指令会比较寄存器 AL 和 DL 中的值。以下是这条指令的工作原理: 1. 比较操作:这条指令会比较 AL 和 DL 中的值,但不改变这两个寄存器的内容。 2. 设置标志位:根据比较结果,这会设置 CPU 状态寄存器(FLAGS 寄存器)中的标志位,特别是: - ZF(零标志):如果 AL 和 DL 中的值相等,则设置为 1,否则为 0。 - SF(符号标志):如果 AL 中的值小于 DL 中的值,则设置为 1,否则为 0。 - CF(进位标志):如果 AL 中的值小于 DL 中的值,则
recommend-type

CSC4370课程网络编程存储库内容概览

根据提供的文件信息,我们可以推断出以下知识点: ### 标题知识点 标题“Web-Programming_CSC4370”表明该存储库关联的课程内容主要集中在Web编程领域,且课程编号为CSC4370。Web编程是计算机科学中的一个专业方向,它涉及创建动态网页和网络应用程序的技术。这个方向通常包含以下几个核心部分: - **HTML (超文本标记语言)**:用于构建网页内容的结构化标记语言,可以用来组织网页的结构、文本、图片等元素。 - **CSS (层叠样式表)**:用于描述网页的格式化和布局,可以控制网页的外观和设计。 - **JavaScript**:一种脚本语言,用于增强网页的交互性和动态功能。 - **后端技术**:包括服务器、应用服务器、数据库等,处理网页的逻辑和数据存储。 - **Web框架**:例如Django(Python)、Ruby on Rails(Ruby)、Express(Node.js)等,用于简化Web应用开发的过程。 - **HTTP/HTTPS协议**:定义了网页和浏览器之间的通信规则。 - **Web安全性**:学习如何保护网站不受恶意软件攻击和数据泄露。 ### 描述知识点 描述中提到的“上载项目,硬件,实验室等”,涉及几个具体的操作或概念: - **上载项目**:在Web开发课程中,学生可能需要将他们的项目代码或网站部署到服务器上,这样其他人就可以访问他们的工作。这通常涉及到使用Git版本控制系统来管理代码,以及可能的云服务或服务器配置来部署项目。 - **硬件**:在Web开发的语境中,硬件通常指的是服务器和网络设备等。了解硬件的运作原理可以帮助开发者更好地理解他们代码运行的环境,并可能需要了解如何在硬件上安装或配置必要的软件以支持Web服务。 - **实验室**:在IT教育中,实验室通常是指配备有计算机和其他相关设备的环境,供学生实践和实验。在Web编程课程的实验室中,学生可能会学习到网站的搭建、调试、测试等实用技能。 ### 标签知识点 标签“HTML”已经明确指出在该课程的存储库中,学生将会使用到HTML。HTML是网页内容的基础,几乎所有的网页都至少包含一些HTML代码。学习HTML涉及到以下知识: - **标签(Tag)**:HTML元素由开始标签、内容和结束标签组成。例如,`<p>这是段落。</p>`中`<p>`和`</p>`分别是段落标签的开始和结束。 - **元素(Element)**:HTML中的每个功能单元,如标题(`<h1>`到`</h6>`), 段落(`<p>`), 图片(`<img>`), 链接(`<a>`), 列表(`<ul>`, `<ol>`, `<li>`)等。 - **属性(Attribute)**:HTML标签可以拥有属性,为元素提供额外的信息。例如,在`<a>`标签中的`href`属性可以指定链接的目标地址。 - **文档结构**:了解如何使用`<html>`, `<head>`, `<title>`, `<body>`等标签来构建一个基本的网页文档结构。 ### 压缩包子文件的文件名称列表知识点 文件名称列表仅提供了“Web-Programming_CSC4370-master”,这暗示了存储库的根目录。尽管没有提供具体文件列表,但我们可以推断出典型的Web编程项目结构可能包含以下文件或目录: - **HTML文件**:如index.html, about.html, contact.html等。 - **CSS样式表文件**:如styles.css,可能还有一个用于响应式设计的media-queries.css。 - **JavaScript文件**:如scripts.js,其中包含网站的交互式脚本。 - **图片和其他媒体文件**:包括.jpg, .png, .gif等格式。 - **库和框架文件夹**:存放如jQuery, Bootstrap等前端库和框架的文件。 - **资源文件夹**:存放静态资源如CSS和JavaScript文件的目录。 - **文档和说明**:README.md,包含项目说明和如何运行项目的指南。 结合这些知识点,可以更好地理解CSC4370课程的存储库内容,以及学生在学习Web编程过程中可能需要掌握的技能和技术。
recommend-type

秀丸文本编辑器终极指南:精通快捷键、插件开发与高效编程

# 摘要 本文全面介绍了秀丸文本编辑器的使用技巧、快捷键操作、插件开发及高效编程实践。首先,概述了秀丸的基本功能和设置,接着深入讲解了快捷键的使用与高级技巧,以及如何管理和优化快捷键配置。第三章转向秀丸插件的开发,包括基础结构、编写过程、进阶API应用及错误处理。在高效编程实践部分,讨论了代码管理、调试、性能优化及版本控制协作。最后,探讨了秀丸与其它工具的集成、个性化定制的可能性和未来发展方向。本文旨在为秀丸用户和开发者提供深入的技术指导,帮助他们提升开发效率和软件体验。 # 关键字 秀丸文本编辑器;快捷键操作;插件开发;高效编程;版本控制;软件集成 参考资源链接:[秀丸文本编辑工具:检索
recommend-type

利用Python+flask对数据库实现一个小型障碍处理案例库查询功能并在页面展示结

在Python中,我们可以利用Flask框架结合SQLAlchemy库来创建一个小型障碍处理案例库查询功能。首先,你需要安装必要的依赖: ```bash pip install flask flask-sqlalchemy ``` 接下来,建立一个简单的数据库模型`ObstacleCase`: ```python from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class ObstacleCase(db.Model): id = db.Column(db.Integer, primary_key=True)
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部