小编fis*_*ish的帖子

将Python int转换为big-endian字节串

我有一个非负的int,我想有效地将​​它转换为包含相同数据的big-endian字符串.例如,int 1245427(0x1300F3)应该生成一个长度为3的字符串,其中包含三个字符,其字节值为0x13,0x00和0xf3.

我的整数是35(基数为10)的数字.

我该怎么做呢?

python

56
推荐指数
6
解决办法
10万
查看次数

在C中计算64x64 int产品的高64位

我希望我的C函数能够有效地计算两个64位有符号整数的乘积的高64位.我知道如何在x86-64程序集中执行此操作,使用imulq并将结果从%rdx中拉出.但是我完全不知道如何在C语言中编写它,更不用说哄骗编译器有效地执行它了.

有没有人有任何建议用C写这个?这是性能敏感的,因此"手动方法"(如俄罗斯农民或bignum图书馆)已经出局.

我写的这个笨拙的内联汇编函数很有用,大致是我追求的代码:

static long mull_hi(long inp1, long inp2) {
    long output = -1;
    __asm__("movq %[inp1], %%rax;"
            "imulq %[inp2];"
            "movq %%rdx, %[output];"
            : [output] "=r" (output)
            : [inp1] "r" (inp1), [inp2] "r" (inp2)
            :"%rax", "%rdx");
    return output;
}
Run Code Online (Sandbox Code Playgroud)

c math 64-bit

14
推荐指数
3
解决办法
2595
查看次数

一个编码精明的grep替换?

我很沮丧,grep在我的UTF-16文档中找不到像"你好"这样的词.

任何人都可以推荐一个试图猜测文件编码然后正确处理它的grep版本吗?

grep character-encoding

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

D-Bus的基础传输是什么?

D-Bus允许程序进行通信.这个IPC是如何实现的?Unix域套接字,共享内存+信号量,命名管道,还有什么?也许是一个组合?

linux ipc dbus

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

变得更快

我正在研究大型二进制文件.我已经实现了着名的Myers Diff算法,它可以产生最小的差异.但是,它是O(ND),所以为了区分两个非常不同的1 MB文件,我预计需要100万平方= 1万亿.这不好!

我想要的是一种产生潜在非最小差异的算法,但速度要快得多.我知道必须存在,因为Beyond Compare会这样做.但我不知道怎么做!

可以肯定的是:有像xdelta或bdiff这样的工具,但这些工具会产生一个用于计算机消耗的补丁,这与人类消耗差异不同.补丁涉及将一个文件转换为另一个文件,因此它可以执行诸如从文件的先前部分进行复制之类的操作.人类消耗品差异在那里可视地显示差异,并且只能插入和删除.例如,这个转换:

"puddi" - >"puddipuddipuddi"

会产生一小部分"复制[0,4]到[5,9]和[10,14]",但更大的差异是"追加'puddipuddi'".我对产生更大差异的算法感兴趣.

谢谢!

algorithm diff

7
推荐指数
1
解决办法
1535
查看次数

查找整数数组的平均值

假设您有一个int数组(使用任何固定大小的int语言).你如何计算最接近它们平均值的int?

编辑:要清楚,结果不必存在于数组中.也就是说,对于输入数组[3,6,7],预期结果是5.另外我想我们需要指定一个特定的舍入方向,所以如果你同样接近两个数字则向下舍入.

编辑:这不是作业.我五年没有做过功课了.这是我第一次使用stackoverflow,所以请你好!

编辑:总结和划分的明显方法可能会溢出,所以我试图想出一种对于大型数组和大型整数都是溢出安全的方法.我认为正确处理溢出(没有作弊和使用不同的类型)是这个问题中最困难的部分.

statistics average

4
推荐指数
1
解决办法
3160
查看次数

为什么我会出现"常数太大"的错误?

我是Windows开发的新手,我很困惑.

当我使用Visual C++ 2010编译此代码时,我得到一个"常量太大"的错误.为什么我会收到此错误,如何解决?

谢谢!

int _tmain(int argc, _TCHAR* argv[])
{
    unsigned long long foo = 142385141589604466688ULL;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++

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

标签 统计

64-bit ×1

algorithm ×1

average ×1

c ×1

c++ ×1

character-encoding ×1

dbus ×1

diff ×1

grep ×1

ipc ×1

linux ×1

math ×1

python ×1

statistics ×1

visual-c++ ×1