小编fra*_*man的帖子

bash中的十六进制到二进制转换

我正在尝试使用bash将一系列字节从十六进制转换为二进制.但我一直得到(看似随机)"(standard_in)1:语法错误"回复以下代码:

for j in c4 97 91 8c 85 87 c4 90 8c 8d 9a 83 81
do
        BIN=$(echo "obase=2; ibase=16; $j" | bc )
        echo $BIN
done
Run Code Online (Sandbox Code Playgroud)

我做了一个与dec to bin类似的东西,它完美地工作:

for i in {0..120}
do
        KEYBIN=$(echo "obase=2; ibase=10; $i" | bc)
        echo $KEYBIN
done
Run Code Online (Sandbox Code Playgroud)

有没有人知道为什么它适用于十进制,但不是十六进制?在我看来,语法几乎相同(除非我遗漏了一些非常难的东西.)

binary bash hex bc

9
推荐指数
3
解决办法
3万
查看次数

Python for循环中的内存错误

我目前正试图找到另一个大数字中包含的最大素数.

maxlen = 1024
for i in range(1023, -1, -1):
    maxlen -= 1
    number = ""
    for k in range(maxlen, -1, -1):
            number = pi[k] + number
            if isprime(number) == True:
                    print number
Run Code Online (Sandbox Code Playgroud)

isprime()是一个检查数字是否为素数的函数(非常标准).这非常有效,直到我得到一个MemoryError.

这不是因为函数检查的数字太大,因为它发生在第一个for循环的第6次运行周围.

我已经尝试过gc.enable()和gc.collect()而没有任何正面结果.

有谁知道如何解决这个问题?

编辑:根据请求定义pi和isprime():

f = open("/root/number", "r")
pi = f.read()
f.close()
Run Code Online (Sandbox Code Playgroud)

文件"number"包含我想要找到素数的原始数字.

def isprime(n):
    n = abs(int(n))
    if n < 2:
            return False
    if n == 2:
            return True
    if not n & 1:
            return False
    for x in range(3, int(n**0.5)+1, 2):
            if n % …
Run Code Online (Sandbox Code Playgroud)

python garbage-collection memory-management

2
推荐指数
1
解决办法
5410
查看次数

在for循环中使用命令行参数(bash)

我正在尝试编写一个bash脚本,该脚本应该在一系列IP地址上执行反向DNS查找.我们的想法是将网络(前3个八位字节)提供为1美元,将范围的开始提供为2美元,将所述范围的结束提供为3美元.

所以我最终得到了:

#!/bin/bash
if [ $# -ne 3 ]
then
    echo "[*] Usage: reverselookup.sh [Network (x.x.x)] [start of range (y)]  [end of range (z)]"
    exit 1
fi

for ip in {$2..$3}
do
    host $1.$ip | grep pointer
done
Run Code Online (Sandbox Code Playgroud)

现在我认为这将在bash for循环中使用正常的序列操作,就像在

for i in {2..5}
Run Code Online (Sandbox Code Playgroud)

给你一个2,3,4和5的循环.但它不起作用.

如果我在循环中回显$ ip并将其作为例如运行

reverselookup.sh 192.168.10 21 50
Run Code Online (Sandbox Code Playgroud)

它给我带来了

{} 21..50

有谁知道是否有可能使这项工作?或者我必须重新考虑我的appraoch?

提前致谢.

bash arguments for-loop

2
推荐指数
1
解决办法
1610
查看次数