JS支持负数的进制转换和产生随机颜色

进制转换

  1. <HTML>
  2. <HEAD>
  3. <META http-equiv='Content-Type' content='text/html; charset=gb2312'>
  4. <TITLE>功能要较强的数字进制转换的脚本</TITLE>
  5. <SCRIPT LANGUAGE="JavaScript">
  6. <!-- Begin
  7. var hex = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
  8. function CKparseInt(n, r) {
  9. for (var i = 0; i < n.length; ++i)
  10. if (n.charAt(i) >= r) {
  11. alert("格式错");
  12. return 0;
  13. }
  14. if (isNaN(M = parseInt(n, r)))
  15. alert ("格式错");
  16. return M;
  17. }
  18. // decimal to any other base 2 to 16
  19. function DecimaltoAnother(A, radix) {
  20. s = "";
  21. while (A >= radix) {
  22. s += hex[A % radix];  // remainder
  23. A = Math.floor(A / radix); // quotient, rounded down
  24. }
  25. return transpose(s += hex[A]);
  26. }
  27. // string reversal
  28. function transpose(s) {
  29. N = s.length;
  30. for (i = 0,t = ""; i < N; i++)
  31. t += s.substring(N-i-1, N-i); // s.substring(from, to)
  32. return t;
  33. }
  34. // convert item.value using radix
  35. function EvalAny(item, r) {
  36. M = CKparseInt(item.value, r); // check this one
  37. for (var i = 0MyForm = document.forms[0]; i < MyForm.length; ++i) // re-evaluate all
  38. MyForm.elements[i].value = DecimaltoAnother(M, MyForm.elements[i].name.substr(1,3));
  39. }
  40. //  End -->
  41. </script>
  42. </HEAD>
  43. <BODY >
  44. <center>
  45.   <h3>进制转换</h3>
  46.   <br>
  47. <form method="post">
  48. <table border=0 align=center>
  49. <tr>
  50. <td align=right>
  51.           <p>二进制:</p>
  52.         </td>
  53. <td><input name="b002" value="0" onChange="EvalAny(this, 2)" size=27></td>
  54. </tr>
  55. <tr>
  56.         <td align=right>三进制:</td>
  57. <td><input name="t003" value="0" onChange="EvalAny(this, 3)" size=21></td>
  58. </tr>
  59. <tr>
  60.         <td align=right>五进制:</td>
  61. <td><input name="q005" value="0" onChange="EvalAny(this, 5)" size=16></td>
  62. </tr>
  63. <tr>
  64.         <td align=right>八进制:</td>
  65. <td><input name="o008" value="0" onChange="EvalAny(this, 8)" size=12></td>
  66. </tr>
  67. <tr>
  68.         <td align=right>十进制:</td>
  69. <td><input name="d010" value="0" onChange="EvalAny(this, 10)" size=11></td>
  70. </tr>
  71. <tr>
  72.         <td align=right>十六进制:</td>
  73. <td><input name="h016" value="0" onChange="EvalAny(this, 16)" size=8></td>
  74. </tr>
  75. </table>
  76. </form>
  77. </center>
  78. </BODY></HTML>

支持负数的16进制转换

 

  1. var errCode = -1474953214;
  2. function memoryHex(value)
  3. {
  4.     return (value >= 0 ? value : 0x100000000 + value).toString(16) 
  5. }
  6. alert(memoryHex(errCode));

产生随机色

  1. function colorFormat(color)
  2. {
  3.     var s = color.toString(16);
  4.     var l = s.length;
  5.     return "#" + "000000".substring(l) + s;
  6. }
  7. var color = Math.ceil(0x1000000 * Math.random());
  8. alert(colorFormat(color));
  9. alert(("000000" + Math.ceil(0x1000000 * Math.random()).toString(16)).replace(/^.*(.{6})$/, "#$1"));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 JavaScript 中,可以使用 `toString()` 方法将一个数字转换为二字符串,然后使用一些技巧来处理负数的情况。 下面是一个将负数转换为二字符串的示例代码: ```javascript function toBinaryString(number) { if (number >= 0) { return number.toString(2); } else { // 将负数转换为补码表示 const positiveBinary = Math.abs(number).toString(2); const invertedBinary = positiveBinary.split('').map(bit => bit === '0' ? '1' : '0').join(''); let binaryString = ''; for(let i = invertedBinary.length - 1; i >= 0; i--) { if (invertedBinary[i] === '1') { binaryString = '1' + binaryString; break; } else { binaryString = '0' + binaryString; } } return '-' + binaryString; } } console.log(toBinaryString(10)); // 输出: "1010" console.log(toBinaryString(-10)); // 输出: "-1010" ``` 这段代码中,我们首先判断输入的数字是否为正数,如果是正数则直接使用 `toString(2)` 方法将其转换为二字符串。对于负数,我们首先将其转换为补码表示。然后对补码字符串按位取反,并将结果保存在 `invertedBinary` 变量中。接下来,我们从右向左遍历 `invertedBinary`,找到第一个为 1 的位,将其之前的所有位都添加到 `binaryString` 中。最后,将 `-` 和 `binaryString` 拼接在一起,得到负数的二表示。 注意:这只是一个简单的示例代码,不考虑数据溢出等情况。在实际应用中,请根据具体需求行适当的处理和验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值