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呢?
...全文
89 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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);

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧