我有一个字节对象:
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)
有没有办法做到这一点?
我有一个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)
什么是正确的方法?
抱歉标题不好,但我不知道怎么称呼这个.
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中运行良好(好吧,至少我没有得到任何警告).
情况
我想在每个之后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()是不是一个有效的答案.
我想知道如何在替换字符串中的反向引用后有数字.
我正在尝试创建一个查找和替换功能,它可以工作,但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) 我正在使用Atmega328在SD卡上实现FAT16.
我经常需要更改扇区中的一个或两个字节(512B区域).
我知道Flash是如何工作的,它需要立刻覆盖整个扇区,但我想知道是否有一些特殊的命令可以使卡本身处理它?
关键是,atmega只有2k RAM,而且只为读取 - 修改 - 写入SD卡缓冲区分配512是非常不利的.没有其他办法吗?
(PS.AFAIK atmega本身不能有外部ram)
我收到一个对象,需要记录它.他们中的一些有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(),而且我想使用这个方法来实现这个目的.
我想在按钮"最大化","隐藏"和"关闭"按钮的左侧添加带有问号图标的新按钮.如何制作(如在图片中)?

我试图编写一个递归函数来产生数组的所有排列。
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] …
我正在开发一个加载 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 上工作)
java ×4
c ×2
php ×2
algorithm ×1
avr ×1
casting ×1
collections ×1
embedded ×1
escaping ×1
filereader ×1
hex ×1
html ×1
javascript ×1
memory ×1
memory-leaks ×1
overriding ×1
permutation ×1
python ×1
python-3.x ×1
reflection ×1
regex ×1
swing ×1
titlebar ×1