IBM AS400主机档的转档问题

今天在项目中需要对AS400(IBM商用小型主机)主机档案进行转档操作,涉及到的主要是UTF-8(本地文件编码格式)与代码页(CodePage 937)之间的转换。

 

1. 读取本地文件srcFile的内容,每行补齐2048位(每行不会超过2048位,不足的以空格补齐)

2. 如果包含中文时,中文算作两位,并且考虑到400的机器,中文前后有0x0E,0x0F(shift out,shift in)控制位,即再加两位,例:“中文”算作6位

 

以下是JAVA代码:

/**
 * $Revision: 1.0 $
 * $Date: Oct 14, 2010 $
 *
 * Author: Ian Chan
 * Date  : Oct 14, 2010
 */
package com.test.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.test.convert.Converter;

/**
 * @author Ian Chan
 * @version 1.0
 */
public class ConverterHelper {

	private static final Log logger = LogFactory.getLog(ConverterHelper.class);

	private static final int LINE_LEN = 2048;

	private static final String SPACE = " ";

	public static String buildContent(File file) {
		StringBuffer buffer = new StringBuffer();
		InputStream is = null;
		BufferedReader reader;
		try {
			is = new FileInputStream(file);
			reader = new BufferedReader(new InputStreamReader(is));
			String line;
			while ((line = reader.readLine()) != null) {
				if (line != null && line.length() < LINE_LEN) {
					StrLength sl = new ConverterHelper().new StrLength(line, line.length());//InnerClass調用
					handleLine(sl);
					line = sl.line;
					int length = sl.length;
					int remain = LINE_LEN - length;
					for (int i = 0; i < remain; i++) {
						line += SPACE;//補齊空格
					}
					buffer.append(line);
					System.out.println("len:" + line.length() + ",line:" + line);
				}
			}
		} catch (IOException e) {
			logger.error(e.getMessage(), e);
		} finally {
			if (is != null)
				try {
					is.close();
				} catch (IOException e) {
					logger.error(e.getMessage(), e);
				}
		}
		return buffer.toString();
	}

	private static void handleLine(StrLength strLength) throws UnsupportedEncodingException {
		String regex = "([\\u4e00-\\u9fa5]|[ ])+";//判斷中文的正則表達式(包括中文全角空格)
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(strLength.line);
		if (!matcher.find())
			return;
		StringBuffer buffer = new StringBuffer();
		int lineLength = 0;
		boolean exist = true;
		int index = 0;
		while (exist) {
			int start = matcher.start();//匹配第一個
			int end = matcher.end();//匹配最後一個
			String beforeStart = strLength.line.substring(index, start);
			buffer.append(beforeStart);
			lineLength += beforeStart.length();

			String cnchars = strLength.line.substring(start, end);
			buffer.append(cnchars);
			lineLength += cnchars.length() * 2 + 2;// 中文字算兩位,前後控制符(0E,0F)各算一位

			index = end;
			exist = matcher.find(end + 1);//查找下一個中文
		}
		String remainLine = strLength.line.substring(index);
		buffer.append(remainLine);
		lineLength += remainLine.length();

		strLength.line = buffer.toString();
		strLength.length = lineLength;
	}

	public static void convert(String srcFileName, String destFileName) {
		try {
			String as400content = Converter.as400Encode(buildContent(new File(srcFileName)));
			FileUtils.writeStringToFile(new File(destFileName), as400content, Converter.ENCODING);

			System.out.println(as400content);
		} catch (IOException e) {
			logger.error(e.getMessage(), e);
		}
	}

	class StrLength {

		private String line;

		private int length;

		private StrLength(String line, int length) {
			this.line = line;
			this.length = length;
		}

		public String getLine() {
			return line;
		}

		public void setLine(String line) {
			this.line = line;
		}

		public int getLength() {
			return length;
		}

		public void setLength(int length) {
			this.length = length;
		}

	}

	public static void main(String[] args) throws Exception {
		String srcFileName = "F:\\AS400_CN";
		String destFileName = "F:\\AS400_CN_CP937";
		convert(srcFileName, destFileName);
		System.out.println("Convert Finished");

	}
}

 对于代码页(CodePage)的内容,参考如下:

Conversion between any of the following codepages is provided.

37 (=x0025) EBCDIC US English
273 (=x0111) EBCDIC German
277 (=x0115) EBCDIC Danish/Norwegian
278 (=x0116) EBCDIC Finnish/Swedish
280 (=x0118) EBCDIC Italian
284 (=x011C) EBCDIC Spanish
285 (=x011D) EBCDIC UK English
297 (=x0129) EBCDIC French
300 (=x012C) EBCDIC Japanese DBCS
301 (=x012D) Japanese PC DBCS
420 (=x01A4) EBCDIC Arabic
424 (=x01A8) EBCDIC Arabic
437 (=x01B5) PC-ASCII US
500 (=x01F4) EBCDIC International
803 (=x0323) Hebrew Set A
813 (=x032D) ISO8859-7 Greek
819 (=x0333) ISO8859-1 Western European
833 (=x0341) IBM-833: Korean
834 (=x0342) IBM-834: Korean Host DBCS
835 (=x0343) EBCDIC Traditional Chinese DBCS
836 (=x0344) EBCDIC Simplified Chinese SBCS
838 (=x0346) EBCDIC Thai SBCS
850 (=x0352) ISO8859-1 Western European
852 (=x0354) PC-ASCII Eastern European
855 (=x0357) PC-ASCII Cyrillic
856 (=x0358) PC-ASCII Hebrew
857 (=x0359) PC-ASCII Turkish
858 (=x035A) PC-ASCII Western European with Euro
860 (=x035C) PC-ASCII Portuguese
861 (=x035D) PC-ASCII Icelandic
862 (=x035E) PC-ASCII Hebrew
863 (=x035F) PC-ASCII Canadian French
864 (=x0360) PC-ASCII Arabic
865 (=x0361) PC-ASCII Scandinavian
866 (=x0362) PC-ASCII Cyrillic #2
868 (=x0364) PC-ASCII Urdu
869 (=x0365) PC-ASCII Greek
870 (=x0366) EBCDIC Eastern Europe
871 (=x0367) EBCDIC Icelandic
872 (=x0368) PC-ASCII Cyrillic with Euro
874 (=x036A) PC-ASCII Thai SBCS
875 (=x036B) EBCDIC Greek
880 (=x0370) EBCDIC Cyrillic
891 (=x037B) IBM-891: Korean
897 (=x0381) PC-ASCII Japan Data SBCS
903 (=x0387) PC Simplified Chinese SBCS
904 (=x0388) PC Traditional Chinese Data - SBCS
912 (=x0390) ISO8859-2 Eastern European
915 (=x0393) ISO8859-5 Cyrillic
916 (=x0394) ISO8859-8 Hebrew
918 (=x0396) EBCDIC Urdu
920 (=x0398) ISO8859-9 Turkish
921 (=x0399) ISO Baltic
922 (=x039A) ISO Estonian
923 (=x039B) ISO8859-15 Western Europe with euro (Latin 9)
924 (=x039C) EBCDIC Western Europe with euro
927 (=x039F) PC Traditional Chinese DBCS
928 (=x03A0) PC Simplified Chinese DBCS
930 (=x03A2) EBCDIC Japanese Katakana/Kanji mixed
932 (=x03A4) Japanese OS/2
933 (=x03A5) EBCDIC Korean Mixed
935 (=x03A7) EBCDIC Simplified Chinese Mixed
937 (=x03A9) EBCDIC Traditional Chinese Mixed
939 (=x03AB) EBCDIC Japanese Latin/Kanji mixed
941 (=x03AD) Japanese PC DBCS - for open systems
942 (=x03AE) Japanese PC Data Mixed - extended SBCS
943 (=x03AF) Japanese PC Mixed - for open systems
944 (=x03BO) Korean PC data Mixed - extended SBCS
946 (=x03B2) Simplified Chinese PC data Mixed - extended SBCS
947 (=x03B3) PC Traditional Chinese DBCS
948 (=x03B4) PC Traditional Chinese Mixed - extended SBCS
949 (=x03B5) PC Korean Mixed - KS code
950 (=x03B6) PC Traditional Chinese Mixed - big5
951 (=x03B7) PC Korean DBCS - KS code
970 (=x03CA) euc Korean
1004 (=x03EC) PC Data Latin1
1006 (=x03EE) ISO Urdu
1008 (=x03F0) ASCII Arabic 8-bit ISO
1025 (=x0401) EBCDIC Cyrillic
1026 (=x0402) EBCDIC Turkish
1027 (=x0403) EBCDIC Japanese Latin
1040 (=x0410) IBM-1040: Korean
1041 (=x0411) Japanese PC - extended SBCS
1042 (=x0412) PC Simplified Chinese - extended SBCS
1043 (=x0413) PC Traditional Chinese - extended SBCS
1046 (=x0416) PC-ASCII Arabic
1047 (=x0417) IBM-1047: Western European
1051 (=x041B) ASCII roman8 for HP Western European
1088 (=x0440) PC Korean SBCS - KS code
1089 (=x0441) ISO8859-6 Arabic
1097 (=x0449) EBCDIC Farsi
1098 (=x044A) PC-ASCII Farsi
1112 (=x0458) EBCDIC Baltic (Latvian/Lithuanian)
1114 (=x045A) PC Traditional Chinese - big 5 SBCS
1115 (=x045B) PC Simplified Chinese SBCS
1122 (=x0462) EBCDIC Estonian
1123 (=x0463) EBCDIC Ukrainian
1124 (=x0464) UNIX-ASCII Ukrainian
1131 (=x046B) PC-ASCII Belarus
1140 (=x0474) EBCDIC USA, with euro (like 037)
1141 (=x0475) EBCDIC Austria, Germany, with euro (like 273)
1142 (=x0476) EBCDIC Denmark, Norway, with euro (like 277)
1143 (=x0477) EBCDIC Finland, Sweden, with euro (like 278)
1144 (=x0478) EBCDIC Italy, with euro (like 280)
1145 (=x0479) EBCDIC Spain, with euro (like 284)
1146 (=x047A) EBCDIC UK, with euro (like 285)
1147 (=x047B) EBCDIC France, with euro (like 297)
1148 (=x047C) EBCDIC International, with euro (like 500)
1149 (=x047D) EBCDIC Iceland, with euro (like 871)
1200 (=x04B0) Unicode - UCS-2
1208 (=x04B8) Unicode - UTF-8
1250 (=x04E2) Windows - Eastern European
1251 (=x04E3) Windows - Cyrillic
1252 (=x04E4) Windows - Western European
1253 (=x04E5) Windows - Greek
1254 (=x04E6) Windows - Turkish
1255 (=x04E7) Windows - Hebrew
1256 (=x04E8) Windows - Arabic
1257 (=x04E9) Windows - Baltic Rim
1275 (=x04FB) Apple - Western European
1280 (=x0500) Apple - Greek
1281 (=x0501) Apple - Turkish
1282 (=x0502) Apple - Eastern European
1283 (=x0503) Apple - Cyrillic
1284 (=x0504) IBM-504: Eastern European
1285 (=x0505) IBM-505: Eastern European
1363 (=x0553) Windows Korean PC Mixed including 11,172 full hangul
1364 (=x0554) Korean Host Mixed extended including 11,172 full hangul
1380 (=x0564) PC Simplified Chinese DBCS
1381 (=x0565) PC Simplified Chinese Mixed
1383 (=x0567) euc Simplified Chinese Mixed
1386 (=x056A) PC Simplified Chinese Data GBK Mixed
1388 (=x056C) DBCS Host Simplified Chinese Data GBK Mixed
5346 (=x14E2) Windows-Eastern European with Euro (like 1250)
5347 (=x14E3) Windows - Cyrillic with Euro (like 1251)
5348 (=x14E4) Windows-Western European with Euro (like 1252)
5349 (=x14E5) Windows-Windows - Greek with Euro (like 1253)
5350 (=x14E6) Windows - Turkish with Euro (like 1254)
5351 (=x14E7) Windows - Hebrew with Euro (like 1255)
5352 (=x14E8) Windows - Arabic with Euro (like 1256)
5353 (=x14E9) Windows - Baltic Rim with Euro (like 1257)
5354 (=x14EA) 'Windows - Vietnamese with Euro (like 1258) 

 

 

维基百科 写道
Shift Out and Shift In characters
From Wikipedia, the free encyclopedia
Jump to: navigation, search
Shift Out (SO) and Shift In (SI) are ASCII control characters 14 and 15, respectively (0xE and 0xF). The original meaning of those characters was to switch to a different character set and back. This was used, for instance, in the Russian character set known as KOI7, where SO starts printing Russian letters, and SI starts printing Latin letters again. SO/SI control characters also are used to display VT-100 pseudographics. ISO/IEC 2022 standard specifies their generalized usage.

Some older printers used these characters to control special features, such as changing the font or ink color. On the Model 38 Teletype, SO switched to red printing while SI switched back to black printing.

 

 -- 2010-10-22更新

今天测试又有点问题,原来是中文全角空格的问题,中文全角空格不包括在"\\u4e00-\\u9fa5"内,所以把检验中文的正则表达式改成了

([\\u4e00-\\u9fa5]|[ ])+

  

从AS400上导出RPGLE程序代码 打开IBM Personal Communications 1.定位需要导出的RPGLE程序 1.1打开我们要导出的RPGLE程序,这是为了在第二个步骤的时候方便设置参数。 1.2或者你也可以不用打开你的RPGLE程序,如果你熟悉你的库和里面的文件的话。 2.设置导出属性 菜单栏中:操作—>接受来自主机的文件,进入下面的窗口: 图1 2.1 在“库/文件(成员)”下的空白处按 阅读详情

相关推荐

IBM AS400中文技术手册(完整)

IBM AS400完整版中文技术手册,入门精品教程

EBCDIC和GBK/GBK2312的转换 AS/400中的实现

AS/400采用EBCDIC编码保存在QSYS.LIB中的所有中文字符,而在pc端winows 95,windows NT采用GBK内码保 存中文字符,两者之间在进行中文数据传输的时候,会遇到EBCDIC和GBK的相互转换。所以,掌握EBCDIC和GBK 的转换码表对于程序员非常重要。 1 收集GBK字符文件 首先必须根据GBK的编码原则得到GBK的汉字库。GBK的编码区间为0X8140到0XF...

fireflyjava的专栏 1518

【STM32Cube HAL】输入捕获(六)——脉宽测量

1

HAHAHA 4908

AS/400上的FTP

3.1.1.1 AS/400上的FTPFTP是如何工作的FTP是基于客户-服务器模型而设计的。客户和服务器之间利用TCP直接连接。与其它客户-服务器模型不同的是:FTP客户与服务器之间是要建立双重连接:一个是控制连接,一个...

covszjy982477891的博客 360

LLC谐振变换器中的软开关艺术:ZVS与ZCS的协同设计

本文深入解析了LLC谐振变换器如何通过巧妙的电路设计,协同实现零电压开关(ZVS)与零电流开关(ZCS),从而大幅降低开关损耗与电磁干扰,提升电源效率。文章结合设计实战,详细阐述了谐振参数计算、器件选型及调试避坑指南,为高效、高功率密度电源设计提供了核心思路与解决方案。

weixin_29216957的博客 350

Stata实战:RCS限制立方样条非线性关系建模与P值解读全攻略

本文详细介绍了在Stata中使用RCS限制立方样条进行非线性关系建模的全过程,包括数据准备、节点设置、COX回归模型构建、结果可视化及P值解读。通过乳腺癌临床数据实例,展示了如何捕捉年龄与死亡风险之间的复杂非线性关系,并提供了实用的Stata代码和图形优化技巧。

weixin_30650039的博客 472

AS400所用编码EBCDIC转ASCII

在openssl里有个文件ebcdic.c这个里面就实现了,ebcdic和ascii码的互转,这里记录下。 /* crypto/ebcdic.c */ #ifndef CHARSET_EBCDIC #include #if defined(PEDANTIC) || def

兼容并蓄终宽阔,若谷虚怀鱼自游 7522

常学常新:《Attention Is All You Need》万字解读!

常学常新:《Attention Is All You Need》万字解读!

hunteritself的博客 3650

AS400 EBCDIC码转UTF-8码

使用iconv函数 ,目标CCSID 为1208. 转载于:https://my.oschina.net/u/3536719/blog/979001...

chuanxian0354的博客 2169

MISRA C 详解 · 专栏06:2023 与 2025 更新总览(相对 2012 的差异)

本专栏 01~05 篇基于(143 规则 + 16 指令)。这六年间标准又前进了两步——(大改)和(微调)。本文补充说明「相对 2012,标准变在哪」,并给出新增规范的代表性示例。

XavierKong的博客 73

S7-200 SMART PLC 子程序功能块(阀门控制)

由于S7-200 SMARTPLC的子程序种种功能、容量限制,有时想实现多次调用的子程序可能并不是太容易,这篇博客还是给出一些推荐写法,供大家参看。

RXXW_Dor的博客 8070

ibmi2 使用说明_释放您的IBM i库和文件

磁带媒体独立性的价值 本文解决了将数据从较旧的IBM®AS /400®系列服务器移动到运行IBM i的较新的IBMPower®System时的问题,即如何将数据文件从旧的盒式磁带还原到系统上没有兼容的磁带机? 此处介绍的技术不仅可以轻松绕开不兼容的磁带机,而且在计划用新的Power System替换旧的中型服务器时还可以节省数千美元。 磁带兼容性问题 自从1988年发布AS / 4...

cusi77914的博客 5594

C#里用HttpListener实现WEB API接口服务端

本文介绍了一个基于WinForm的HTTP服务实现方案。该方案使用HttpListener类创建了一个支持JSON POST请求处理的轻量级Web服务器,主要特点包括:1) 纯线程方式实现请求监听和处理;2) 提供标准化的JSON响应格式;3) 支持自定义请求处理逻辑;4) 包含完整的日志记录功能。代码示例展示了如何初始化服务、处理不同类型的请求(包括JSON POST),并提供了线程安全的UI更新机制。该实现适用于需要简单HTTP接口的Windows桌面应用程序,可作为程序间通信的基础设施。

大坡3D软件开发 229

【AS400】IBM AS400 简介 (及RPG简介)--(转同事文档)

IBM AS400 简介 (及RPG简介)--(转同事文档) 作者:UB时间:2004-03-18 19:55:24[修改][回复]                AS400 简介                           王德春(2004.3)            1. AS400简介 IBM AS/400是中型机市场上最重要的非UNIX,非NT平台。AS40...

tudusi 2831

从 Chat 提示词到可运行 Fiori 应用,ADT for VS Code 正在把 RAP 开发带进 Agent 时代

本文探讨了在VS Code中使用AI辅助进行ABAP RAP开发的新模式。文章指出,传统RAP开发需要手工创建数据库表、CDS视图、行为定义等十多个关联对象,命名和关联关系容易出错。现在通过GitHub Copilot Agent Mode配合ADT MCP Server,开发者可用自然语言描述业务场景直接生成完整的RAP业务对象。这种生成式开发的核心价值在于:1)通过标准化工具接口(MCP)连接ABAP后端,确保生成符合规范的RAP对象;2)能正确处理多实体组合场景下的命名一致性和关联关系;3)保持生成结

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 89

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IBM AS/400产品介绍

  http://www.jlhome99.com/articles/art2/2436.htm   IBM AS/400产品介绍 1、 IBM AS/400 ★ AS/400的竞争优势 IBM AS/400是中型机市场上最重要的非UNIX,非NT平台。中型机是指性能位于高端PC服务器之上但低于低端大型主机的服务器。 自1988年推出之日起,IBM AS...

mlxia的专栏 1468

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

IBM AS400主机在用的JDBC语法

hengchun11的专栏 1961

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

你想知道的IBM AS/400现代化问题,这里都有答案!

勤达睿正在全球范围内为大量IBM AS/400(亦称IBM i)客户提供代码转换与应用迁移服务,助力他们实现传统核心系统的现代化转型。在这些项目中,不少客户的CTO及项目负责人对我们的自动化代码转换工具提出了诸多问题与顾虑,其中部分客户更希望在项目正式启动前就能获得清晰的解答。本文总结了大量客户在使用勤达睿的自动化代码转换工具实施项目的初期最常见的疑问,并一一进行了答复。

kelvin_zhang2011的博客 1075

IBM i、i5/OS和 OS/400系统介绍

<!-- @page {margin:0.79in} h2 {margin-bottom:0.08in} h2.western {font-family:"Liberation Sans",sans-serif; font-size:14pt; font-style:italic} h2.cjk {font-family:"宋体"; font-size:14pt

JonnyWei的专栏 1万+

AS/400的历史

1.1.AS/400的诞生背景在介绍AS/400之前,先简单回顾一下AS/400的发展历史。IBM AS/400的创始人Frank G.Soltis 博士认为“历史”对设计新型计算机系统的影响力远胜于其他因素。同样,在设计一个新型计算机系统时,开发的场所和先前的产品也有着相当大的影响力。60年代,位于美国东部(the EastCoast)的许多计算机公司,例如Digital,Data Genera

一寒的博客----我亦无它,唯学习尔! 1289

AS400==创建主机,使用客户端连接上主机

因为AS400基于的CPU架构和自己用的PC不一致,所以要么自己买台AS400主机/上云服务买一台,或者去些网站免费申请一台。连上后默认光标会停在your user name后面,输入你的用户名,键盘下键移动到密码行输入密码,然后回车。下键移动到下下行,左键移动到new password的最后一个点后两个空格处输入新密码。下键移动到下下行,左键移动到new password的最后一个点后两个空格处输入新密码。输入第一个命令DSPLIB然后回车,查看这个操作系统有什么基础的LIB。F3回到最开始那个界面。

hebian1994的博客 706

AS400 op

这道练习没有代码,它的主要目的是让你可以在计算机上写AS/400相关的代码。你尽量按着说明进行操作就可以了。       通常我们可以使用Pcomm(Personal Communications)或CA(Client Access)来连接AS/400主机进行开发。大家可以根据需要自行下载Pcomm或CA。 AS/400主机申请       开发需要AS/400主机。给大家提供一个AS/40

lxyfish111的专栏 1878

RPA从小白到大师之一:AS400绿屏5250终端仿真器自动化

IBM的AS400是非常经典的商用服务器,发源于上世纪70年代,历经半个世纪,至今仍在售(不过改名Power i系列了)。访问AS400, 用的是终端仿真器(Emulator)。对仿真器做RPA工具,与常规的Windows区别还是比较大的,本篇就来全面介绍一下如何开发AS400 PC5250仿真器的RPA程序。

m0_54284125的博客 1404

AS/400与UNIX系统的性能对比

AS/400与UNIX系统的性能对比 AS/400系统在以下十大方面较UNIX系统具有强大的优势: 安全性方面: AS/400e具有领先于业界的系统安全性。早在OS/400的V2R3版本中,IBM就推出了OS/400 50级的安全性管理,该级别安全管理获得了美国联邦政府定义的商业计算最高安全级别C2级认证。迄今为止,AS/400e堪称是世界上"最安全"的计算机。 AS...

main_bo的专栏 758

AS400之-AS_400的迅速发展及未来(转)

AS400之-AS_400的迅速发展及未来(转)[@more@]作者:不祥 [文章出自: www.fanqiang.com]目前,世界上共有超过45万台的AS/400正在运转,其中大多数在美国以外。AS/400已成为最流行的国际...

congjukun0600的博客 415
上一篇: Java 编码问题解析
下一篇: JSF Session timeout处理
Bryan_Chan
博客等级 码龄17年 1粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值