javascript 转 C 的一个小问题

111222 2004-12-05 03:45:31
一段极简单的javascript:

function hex(c)
{
return String("0123456789ABCDEF").charAt((c/16)&0x0F)+String("0123456789ABCDEF").charAt((c/1)&0x0F);
}


我转换成C的实现:

string hex(char c)
{
string strHex ;
strHex += str.at((c/16)&0x0F);
strHex += str.at((c/1)&0x0F);
return strHex;
}

为什么javascript调用hex('a')得到C5,
而C调用hex('a')得到D5呢?
...全文
50 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyskytoday 2004-12-05
楼上的问题是没看明白

只是我楼楼上地:ttyp(愿赌服输) ( ) 信誉:100
令我很诧异

用了记得上个月我说你,成了星星了,高兴
现在又变成两个星了
一个月时间,从一颗到两颗
真是好佩服啊:)
回复
patchclass 2004-12-05
'a', 是 ASCII 为十进制197的数值???
是97的吧
str没有定义
str.at???是函数吧,标准的c是没有这样写法的
回复
ttyp 2004-12-05
你的c实现没定义str啊,是你的C实现有问题,你用计算器转换197为16进制看看也是c5
回复
PPLUNCLE 2004-12-05
/:将两个表达式的值相除。

&:
按位“与”运算符 (&)
对两个表达式执行按位“与”。

result = expression1 & expression2

参数
result

任何变量。

expression1

任何表达式。

expression2

任何表达式。

说明
& 运算符查看两个表达式的二进制表示法的值,并执行按位“与”操作。该操作的结果如下所示:

0101 (expression1)
1100 (expression2)
----
0100 (result)
任何时候,只要两个表达式的某位都为 1,则结果的该位为 1。否则,结果的该位为 0。

回复
111222 2004-12-05
javascript的运算符 / 和 & 和C/C++的不同么?
回复
111222 2004-12-05
上面说错了, 参数不是'a', 是 ASCII 为十进制197的数值.

var c = 197;
hex(c);

int c = 197;
hex((char)c);
回复
发动态
发帖子
JavaScript
创建于2007-09-28

8.4w+

社区成员

Web 开发 JavaScript
申请成为版主
社区公告
暂无公告