小编Mig*_*ork的帖子

Python3字节到十六进制字符串

我有一个字节对象:

a =  b'067b'
Run Code Online (Sandbox Code Playgroud)

我如何从中获取字符串?像这样:

"067b"
Run Code Online (Sandbox Code Playgroud)

我试过了:

In [3]: str(a)
Out[3]: "b'067b'"

In [4]: import codecs

In [5]: codecs.decode(a,'hex')
Out[5]: b'\x06{'

In [6]: import binascii

In [7]: binascii.b2a_hex(a)
Out[7]: b'30363762'

In [8]: binascii.hexlify(a)
Out[8]: b'30363762'
Run Code Online (Sandbox Code Playgroud)

没有办法做到这一点?

python hex python-3.x

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

将Set <Object>转换为Collection <String>

我有一个Set<Object>.

我需要从中得到一个Collection<String>.

我可以考虑制作一个for循环来添加和转换所有的对象,但这很难看,也可能很慢.

@Override
public Collection<String> keys()
{
    // props is based on HashMap
    Set<String> keys = new HashSet<>();
    for (Object o : props.keySet()) {
        keys.add((String) o);
    }
    return keys;
}
Run Code Online (Sandbox Code Playgroud)

什么是正确的方法?

java collections casting

8
推荐指数
1
解决办法
1万
查看次数

为什么php认为大的int是浮点数(但有时只是)?

抱歉标题不好,但我不知道怎么称呼这个.

echo rand(0,10e20) . "\n"; // bad
echo rand(0,10e19) . "\n"; // bad
echo rand(0,10e18) . "\n"; // bad
echo rand(0,10e17) . "\n"; // OK
echo rand(0,10e16) . "\n";
echo rand(0,10e15) . "\n\n";

var_dump(10e20); // float
var_dump(10e15); // float
Run Code Online (Sandbox Code Playgroud)

输出:

警告:rand()期望参数2为整数,在/srv/webroot-sandbox/index.php(73)中给出float:第1行的eval()'代码

警告:rand()期望参数2为整数,在/srv/webroot-sandbox/index.php(73)中给出float:第2行的eval()'代码

警告:rand()期望参数2为整数,在/srv/webroot-sandbox/index.php(73)中给出float:第3行的eval()'代码

578009006101638016
69608699344098568
7596902768127620

float(1.0E+21)
float(1.0E+16)
Run Code Online (Sandbox Code Playgroud)

有人可以解释发生了什么吗?这是PHP 7,它在PHP 5中运行良好(好吧,至少我没有得到任何警告).

php

8
推荐指数
2
解决办法
2070
查看次数

preg_replace:反向引用后添加数字

情况

我想在每个之后preg_replace()添加一个数字. '8'[aeiou]

abcdefghij
Run Code Online (Sandbox Code Playgroud)

a8bcde8fghi8j
Run Code Online (Sandbox Code Playgroud)


我该如何写替换字符串?

// input string
$in = 'abcdefghij';

// this obviously won't work ----------?
$out = preg_replace( '/([aeiou])/', '\18',  $in);
Run Code Online (Sandbox Code Playgroud)

只是一个例子,所以建议str_replace()不是一个有效的答案.
我想知道如何在替换字符串中的反向引用后有数字.

php regex backreference escaping

7
推荐指数
2
解决办法
2913
查看次数

在没有内存泄漏的情况下替换char*

我正在尝试创建一个查找和替换功能,它可以工作,但valgrind报告了巨大的内存泄漏.

看一看:

void repl(char** str) {

    // build a new string (simulating find&replace)

    char* replacement = (char*)malloc(7);
    strcpy(replacement, "my ass");

    // this causes "free(): invalid pointer" crash
    //free(*str);

    *str = replacement; // return to caller
}

/* main function */
int main (int argc, char **argv) {

    // out original string
    char* str = "memory leak here";
    repl(&str); // replace something 1st time
    repl(&str); // 2nd time
    repl(&str); // 3rd time

    printf("%s\n",str); // look at output

    exit(0);
}
Run Code Online (Sandbox Code Playgroud)

当"免费"到位时,您将获得:

*** …
Run Code Online (Sandbox Code Playgroud)

c memory memory-leaks

6
推荐指数
1
解决办法
960
查看次数

只更改SD卡扇区中的一个字节

我正在使用Atmega328在SD卡上实现FAT16.

我经常需要更改扇区中的一个或两个字节(512B区域).

我知道Flash是如何工作的,它需要立刻覆盖整个扇区,但我想知道是否有一些特殊的命令可以使卡本身处理它?

关键是,atmega只有2k RAM,而且只为读取 - 修改 - 写入SD卡缓冲区分配512是非常不利的.没有其他办法吗?

(PS.AFAIK atmega本身不能有外部ram)

c embedded avr

6
推荐指数
1
解决办法
765
查看次数

检测对象是否覆盖了toString()

我收到一个对象,需要记录它.他们中的一些有cusom toString()然后我想使用它,但有些没有,我得到类似的东西mightypork.rogue.bus.events.MouseMotionEvent@2d19587d.

我正在寻找一种动态的方法(也许用反射?)检查传入的对象是否已经toString()覆盖了自己.

String objToString(Object o)
{
    if(???) {
        return o.toString();
    } else {
        // fallback method
        return o.getClass().getSimpleName();
    }

}
Run Code Online (Sandbox Code Playgroud)

边注:

它是一个事件总线系统,有些类可以订阅,然后根据实现的接口接收事件.我不可能要求所有客户端都有toString(),而且我想使用这个方法来实现这个目的.

java reflection overriding

5
推荐指数
1
解决办法
2938
查看次数

Swing:将帮助[?]按钮添加到窗口标题栏

我想在按钮"最大化","隐藏"和"关闭"按钮的左侧添加带有问号图标的新按钮.如何制作(如在图片中)? 在此输入图像描述

java swing titlebar

5
推荐指数
1
解决办法
1264
查看次数

递归遍历数组的所有排列

我试图编写一个递归函数来产生数组的所有排列。

static int permus[] = new int[] { 1, 2, 3, 4, 5 };


static void testPermu(int start)
{
    // Print it
    System.out.println(Arrays.toString(permus));

    int k;
    for (int i = start + 1; i < permus.length; i++) {
        // swap
        k = permus[start];
        permus[start] = permus[i];
        permus[i] = k;

        testPermu(i);

        // unswap
        k = permus[start];
        permus[start] = permus[i];
        permus[i] = k;
    }
}
Run Code Online (Sandbox Code Playgroud)

它会作为调用,testPermu(0)并应产生所有排列,但是不起作用。我该如何解决?

它需要递归,每次调用该函数时,都应该获得新的排列。

现在的输出是

[1、2、3、4、5]
[2,1,3,4,5]
[2、3、1、4、5]
[2,3,4,1,5]
[2、3、4、5、1]
[2、3、5、4、1]
[2,4,3,1,5]
[2,4,3,5,1]
[2、5、3、4、1]
[3,2,1,4,5]
[3,2,4,1,5]
[3,2,4,5,1]
[3,2,5,4,1] …

java algorithm permutation

5
推荐指数
1
解决办法
1万
查看次数

如何重新加载在 &lt;input type="file"&gt; 中选择的文件

我正在开发一个加载 SVG 文件并将其转换为 JSON 的工具。

表格如下所示:

<div>
    <input type="file" id="filepicker" accept="image/svg+xml,.svg">
    <button type="button" id="load-file">Load file</button>
</div>
Run Code Online (Sandbox Code Playgroud)

加载中:

function loadFile () {
    var filepicker = $('#filepicker')[0];
    if (!filepicker.files.length) return;
    var reader = new window.FileReader();
    var file = filepicker.files[0];
    reader.onload = function (e) {
        var txt = e.target.result;
        processSVG(txt);
    };
    reader.readAsText(file)
}

$('#load-file').on('click', loadFile);
$('#filepicker').on('change', loadFile);
Run Code Online (Sandbox Code Playgroud)

这是通过自动加载用户选择的文件来实现的。但我想让“加载”按钮刷新文件,即从磁盘再次加载它。用例是您在 Inkscape 中打开 SVG 文件并保存它,然后单击“加载”按钮,它将显示在浏览器中。

由于某种原因,单击“加载”按钮不会可靠地重新加载文件 - 我让它工作了几次,但其他时候它只是拒绝执行任何操作,就像文件被缓存一样。这可能吗?如果可能的话,如何实现?

(我知道这在带有文件锁的 Windows 上可能是不可能的,没关系。我需要它在 Linux 和 Mac 上工作)

html javascript filereader

5
推荐指数
0
解决办法
1168
查看次数