| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2068 人关注过本帖
标题:c 语言 转换 BCD 字符串
只看楼主 加入收藏
wpzqyjever
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-8-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:17 
c 语言 转换 BCD 字符串
本人初学者遇到问题,求大侠们帮忙解决:
char *p = "123456";
怎么样放到内存里为BYTE 12 34 56,请大家帮忙;
搜索更多相关主题的帖子: 字符串 
2011-08-16 18:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:7 
学过字符是什么吗?字符串的结构吗?

授人以渔,不授人以鱼。
2011-08-16 19:08
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:7 
是把字符串转化为16进制后,把每个字节存放到内存里吗?是Big Endian存放还是以Little Endian存放?内存地址又是多少?楼主我有点想说脏话了。

My life is brilliant
2011-08-16 19:15
wpzqyjever
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-8-16
收藏
得分:0 
回复 2楼 TonyDeng
一个字符应该是一个BYTE 00-FF 吧,字符串是一串字符!不知道说的对不对!
2011-08-16 19:16
wpzqyjever
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-8-16
收藏
得分:0 
...新手,新手,望大家谅解
2011-08-16 19:17
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
目的是神马?

My life is brilliant
2011-08-16 19:17
wpzqyjever
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-8-16
收藏
得分:0 
回复 3楼 lz1091914999
char *p = "12";
直接用 p的话,内存存放值应该是 0x01 0x02 吧,我想要的是内存存放我 0x12!求解!
2011-08-16 19:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 4楼 wpzqyjever
既对,也不对。

在早期,普遍采用ANSI编码的时候,确实以1个8位二进制码表示字符,对美国标准的ASCII编码来说,更是连8bit都没用全。所以ANSI规定,字符是1byte的无符号整数。但要注意,不是世界上任何地方都使用ASCII编码,对同一个字符编码,在英国、德国和在美国可能是不同的字符,具体这个整数代表什么字符,由编译器的设定开关设定,那个人是可以调整的,所以在写程序的时候,如果要兼容性(打算程序通行全世界的),就不要用数字直接代替字符(有人很喜欢不写字符而写数值,显得懂C有特色,能别人所不能)。

以上,是单字节字符编码的架构,即使是单字节编码,也不要随便假定。然而,时至今日,随着世界日益全球化,程序不会再在美国编码上打转了,当今ANSI已经接纳使用Unicode编码规则,那是双字节编码,即一个字符是2byte,这个字符集囊括全世界的绝大多数字符还有剩余,其中包含汉字(中日韩大字符集是其中的子集)。在Windows系统中,是全面使用Unicode字符编码的,即使是1楼那样的字符串,每个阿拉伯数字也是2byte。在当今的编译器中,为了区分这样的两种编码,在字符串字面值前要加标识:1楼那样的写法"123456"是ANSI编码,单字节的,如果是L"123456",则是Unicode编码,双字节的。但这仍然与编译器的设定有关,某些时候,编译器可能被设定为默认是Unicode编码,此时"123456"未必仍然是单字节的字符序列。全面采用Unicode,淘汰ANSI的日子,不会太远了。

1楼的问题,按常规当ANSI解释,是可以的。

授人以渔,不授人以鱼。
2011-08-16 19:35
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 7楼 wpzqyjever
不是你想的那样,在内存里应该是0x31 0x32,0x31 == 49, 0x32 = 50,也就是说字符‘1’在内存里面是49,字符‘2’在内存里面是50,为什么1不是1,2不是2呢,答案在书上。

My life is brilliant
2011-08-16 19:40
wpzqyjever
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-8-16
收藏
得分:0 
回复 6楼 lz1091914999
报文发送,格式约定!
2011-08-16 19:41
快速回复:c 语言 转换 BCD 字符串
数据加载中...
 
   



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

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