我有一个超过800个字符的数据字符串,我正在尝试压缩以用于QR码(我想要至少50%,但如果我把它减少到不到七百,可能会很高兴) .这是我正在尝试压缩的示例字符串,包含841个字符:
+hgoSuJm2ecydQj9mXXzmG6b951L2KIl0k9VGzIEtLztuWO2On9rt7DUlH0lXzG4iJ1yK0fA
97mDyclKSttIZXOxSPBf85LEN4PUUqj65aio5qwZttZSZ64wpnMFg/7Alt1R39IJvTmeYfBm
Tuc1noMMcknlydFocwI8/sk2Sje5MR/nYNX0LPkQhzyi5vFJdrndqAgXYULsYrB3TJDAwvgs
Kw9C5EJnrlqcb21zg17O2gU/C8KY0pz9RPzUl1Sb0rCP8iZCeis4YbQ5tuUppOfnO/X0Mosv
SOQJ/bF9juKW8ocnQvNjsNxGV1gPkWWtiU2Old7Qm7FLDqL6kQKrq356yifs0NiMVGdvAg32
eugewuttCugoZASYOpQdwPu1jMxVO1fzF3zEy5w6tDlcfA2DZwa+un9/k8XZWAO/KVExy68q
UtVRQxsIOKgpl/2tNw5DBAKbykKIkmizbsA2xtzqnYqld4kOdNMJh3YjlqWF9Bt8MZo7a+Q6
jgayr2rjpyIptc599DGtvp68ZNQ64TKNmiMnnyGMo3E+xW34G3RrsYnHGm+xJoLKoOJhacDu
oZke1ycJgQv+Y61WPrvtFOVBxV5rvSzO0+8px5AWN3uCrrw1RmT5N14IVhh6BOtRjsifqIB2
dAKxzBNsvbXm1SzkuyqYiMnp5ivy3m2mPwc9GLsykx0FRIkhCYO8ins9E5ot9QvVnE155MFA
8FVwsP5uNdOF4EzQS2/h2QK3zb5Yq4Nftlo605Dd5vuVN/A7CUN38DaAKBxDKgqDzydfQnZw
R0hTfMHNLgBJKNDSpz2P6almGlUJtXT6IYmzuU2Iaion8ePG
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以下三个库:
我遇到了压缩实际上使字符串更长的问题.我的理解是DeflateStream的开销最小,但它仍在添加字符.使用DotNetZip,我告诉它使用最大压缩:
Imports Ionic.Zlib
Shared Function CompressData(data As Byte()) As Array
Dim msCompressed As MemoryStream = New MemoryStream
' I'm not sure if the last parameter on this next function should be
' true (for LeaveOpen), but it doesn't seem to affect it either way.
Dim deflated As DeflateStream = New DeflateStream(msCompressed, _
CompressionMode.Compress, CompressionLevel.BestCompression, True)
' …Run Code Online (Sandbox Code Playgroud) 无论如何,是否有必要使用pygame从控制台获取输入,而不必显示单独的窗口以获取输入?我正在使用pygame跟踪键盘上的按键被按下了多长时间。
以下代码不起作用(这只是一个最小的示例,它实际上并不跟踪经过的时间):
pygame.init()
while 1:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
print event.key, 'pressed'
Run Code Online (Sandbox Code Playgroud)
看起来没有任何pygame事件被引发。如果我加
screen = pygame.display.set_mode((640, 480))
Run Code Online (Sandbox Code Playgroud)
后
pygame.init()
然后引发了该事件,但是我有一个我不想处理的可怕的窗口。
为了解释为什么我不想要该窗口,我设想此应用程序是一个命令行实用程序,所以我不能拥有它。是否有任何功能上的原因阻止pygame在命令行上运行?
谢谢!
编辑:我推测问题是pygame.init(),并且我只需要初始化键和事件模块。根据http://www.pygame.org/docs/tut/ImportInit.html,我应该可以打电话
pygame.key.init()但这没用。
pygame.event.init()
我正在开发一个生成FDF文件的程序,用于填写Adobe PDF表单.目前,我有各种被调用的过程,因为在每个过程终止之前,它会打开FDF文件,写入其特定数据并关闭文件.
我正在尝试将用于将数据写入FDF文件的代码放在单独的过程中,然后让其他过程调用它.这将允许按任务更大程度地分离代码,如果我将来必须更改它,我可以轻松地完成.
我遇到了一些问题,因为我需要将不同数量的变量传递给fprintf.也就是说,我曾经有这样一条线:
fprintf(fp,"<</T(f1_44(0))/V(%d)>>\n",wages);
Run Code Online (Sandbox Code Playgroud)
我编写了以下函数,但我无法使其工作:
void writeToFDF(FILE *fp, char *filename, char *data, char *arg)
{
/* independent method for writing to FDF file */
/* open file */
fp=fopen(filename,"a");
fprintf(fp,data,arg);
/* close file */
fclose(fp);
}
Run Code Online (Sandbox Code Playgroud)
所以在理论上,我会在父函数调用中:
writeToFDF(fp,"1040.fdf","<</T(f1_44(0))/V(%d)>>\n",wages);
Run Code Online (Sandbox Code Playgroud)
我现在遇到错误,我相信它与函数参数的最后部分有关.另外,如果我有多个参数,我怎么能让它工作?
谢谢.
我正在编写一个编程任务,并且在使用指针时遇到了一些麻烦.下面的代码示例不是来自我的作业,而是说明了我遇到的问题.我正在尝试将指针传递给另一个函数(从更改到真正)并让该函数创建一个新对象然后返回它.但是,我发现原始对象并没有真正改变.我无法弄清楚为什么不这样做,因为我正在使用malloc在堆上分配它,因此该对象应该在创建它的函数之外继续存在.
在下面的代码示例中,我正在寻找输出:
a = 3
a = 5
Run Code Online (Sandbox Code Playgroud)
但相反,我得到了
a = 3
a = 3
Run Code Online (Sandbox Code Playgroud)
即使是正确方向的一些指针也会有用!谢谢!
山姆
笔记
示例代码
#include <stdio.h>
#include <stdlib.h>
void really(int *a) {
/* Allocate pointer to new int, set it to 5, and
then set the pointer passed in equal to the new pointer */
int *b = malloc(sizeof(int));
*b = 5;
a = b;
}
void change(int *a) {
/* We don't actually change the object in this function;
we are instead passing …Run Code Online (Sandbox Code Playgroud)