| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2294 人关注过本帖
标题:请问EXCEL VBA中的ASCII码与C++的ASCII码是否一样?
只看楼主 加入收藏
HenryLin8
Rank: 1
等 级:新手上路
帖 子:38
专家分:4
注 册:2012-10-12
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:11 
请问EXCEL VBA中的ASCII码与C++的ASCII码是否一样?
各位高手:
有个菜鸟级的问题想问各位,
今天我从EXCEL的VBA中用Chr函数将0~255的字符导出到txt文档中,
再用C++导入分析数据,可就是得不到想要的结果,
而直接导出数字才得到想要的结果。
是否VBA中的ASCII码与C++的ASCII码不同?
因为我想省1个字节,也就是用char来计算,看看char类型会比unsigned short快多少。
请高手指点!
谢谢!
搜索更多相关主题的帖子: 多少 EXCEL 
2012-10-18 09:30
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
Ding~
2012-10-18 18:45
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
应该跟编码有关,看看导出的时候编码是否正确了。

My life is brilliant
2012-10-18 18:57
小糊涂神c30
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:198
专家分:809
注 册:2012-4-25
收藏
得分:0 
ASCII码是通用的吧,这是全球的一套标准吧!
2012-10-18 20:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
在VBA里chr()出来的都是宽字符,即Unicode-16字符。不要以为你看到的ASCII字符,比如'0'-'9'、'A'-'Z'等等就是单字节的,在Unicode-16里,那都是双字节的!

授人以渔,不授人以鱼。
2012-10-19 00:18
HenryLin8
Rank: 1
等 级:新手上路
帖 子:38
专家分:4
注 册:2012-10-12
收藏
得分:0 
回复 5楼 TonyDeng
那在vba怎样输出与C++一样的字符呢?特别是ASCII值0~9的字符。

本人使用:
win7旗舰版 MS OFFICE2010 C++2010
虽然脑子不好使,但喜欢玩编程。
2012-10-19 10:57
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:10 
在txt文件中,前面的几个字节是用来表示其编码方式的,比如说UTF_8(txt文件UTF_8编码实则为:UTF_8+BOM)编码,则txt文件的前三个字节是:EF BB BF
对于Unicode编码,则txt文件的前三个字节是:FF FE
对于Ansi方式的数据,则不会出现多余的字节情况。
在“解读数据”时,会去参考前面多余的字节的,但是像ansi这种方式的数据来说,则只会去猜测了,大家看到的不是乱码的情况,说明猜对了;猜错了,就是乱码了。

当然了,上述废话,与你说的这种情况无关。
你可以使用WideCharToMultiByte函数将宽字节字符串转换为多字节(即ansi字符串),这样分析的时候就不会出错了。

同时你可以设置一下编译器的编码方式,设置为UNICODE方式,可以#define UNICODE

愿用余生致力编程
2012-10-19 11:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用HenryLin8在2012-10-19 10:57:31的发言:

那在vba怎样输出与C++一样的字符呢?特别是ASCII值0~9的字符。

宽字符中低位储存的就是普通ASCII码值(高位为零),你要么把得到的WORD值截取低位储存到文件,要么在C/C++解读数据时只处理WORD的低位。

授人以渔,不授人以鱼。
2012-10-19 11:43
HenryLin8
Rank: 1
等 级:新手上路
帖 子:38
专家分:4
注 册:2012-10-12
收藏
得分:0 
回复 8楼 TonyDeng
我想知道,在EXCEL的VBA中是用chr()输出ASCII字符吗?
因为我试过,例如chr(6)输到工作表中,然后导入txt,再导入C++的。
可是在EXCEL中chr(6)是这个字符'-',与C++的不一样。

本人使用:
win7旗舰版 MS OFFICE2010 C++2010
虽然脑子不好使,但喜欢玩编程。
2012-10-19 12:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
VBA中对不可打印字符的处理与ASCII不同,chr(6)是表格线(那附近一堆都是)。你要使用数值,直接写数值,不要用字符型。

授人以渔,不授人以鱼。
2012-10-19 12:20
快速回复:请问EXCEL VBA中的ASCII码与C++的ASCII码是否一样?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043329 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved