小编dar*_*pbj的帖子

将文件转换为Base64String并再次返回

标题说明了一切:

  1. 我在这样的tar.gz档案中读到了
  2. 将文件分成一个字节数组
  3. 将这些字节转换为Base64字符串
  4. 将该Base64字符串转换回字节数组
  5. 将这些字节写回新的tar.gz文件

我可以确认这两个文件大小相同(以下方法返回true)但我无法再提取副本版本.

我错过了什么吗?

Boolean MyMethod(){
    using (StreamReader sr = new StreamReader("C:\...\file.tar.gz")) {
        String AsString = sr.ReadToEnd();
        byte[] AsBytes = new byte[AsString.Length];
        Buffer.BlockCopy(AsString.ToCharArray(), 0, AsBytes, 0, AsBytes.Length);
        String AsBase64String = Convert.ToBase64String(AsBytes);

        byte[] tempBytes = Convert.FromBase64String(AsBase64String);
        File.WriteAllBytes(@"C:\...\file_copy.tar.gz", tempBytes);
    }
    FileInfo orig = new FileInfo("C:\...\file.tar.gz");
    FileInfo copy = new FileInfo("C:\...\file_copy.tar.gz");
    // Confirm that both original and copy file have the same number of bytes
    return (orig.Length) == (copy.Length);
}
Run Code Online (Sandbox Code Playgroud)

编辑:工作示例更简单(感谢@TS):

Boolean MyMethod(){
    byte[] AsBytes = File.ReadAllBytes(@"C:\...\file.tar.gz");
    String AsBase64String …
Run Code Online (Sandbox Code Playgroud)

c# base64 system.io.fileinfo streamreader

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

如何查看管道是否为空

假设一个管道,

int pipe_fd[2];
pipe(pipe_fd);
Run Code Online (Sandbox Code Playgroud)

我们fork,并期望一个进程将在任意时间写入管道.在其中一个过程中,我们希望能够在不阻塞的情况下检查管道的内容.

即,如果不存在任何内容并且写入结束保持打开,则典型读取将阻塞.我想去做其他的事情,甚至可能一次读一些,做一些事情,然后检查一下是否还有更多,一个la:

close(pipe_fd[1]);

while(1){
    if(/**Check pipe contents**/){
        int present_chars = 0;    

        while( read(pipe_fd[0],&buffer[present_chars],1) != 0)
            ++present_chars;

        //do something

    }
    else
        //do something else
}
Run Code Online (Sandbox Code Playgroud)

c pipe block blocking

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

仅当'beforeunload'函数返回true时才运行Javascript代码

当用户离开页面时,我正在使用JQuery来捕获卸载事件.这工作正常,但我只有在用户真正想要离开的情况下才需要保存数据.

这是我的捕获22.如果我过早保存代码并且用户不想离开,我已经破坏了支持代码的Web服务的状态.

因此,只有在'beforeunload'对话框返回true时,我才需要完成执行代码的近乎难以逾越的任务.

$(window).on('beforeunload', function(e) {
    var info = * some info to save the current page state *
    return 'Are you sure you want to navigate away from the Test Runner?';

    //unreachable place where I wish I could ajax 'info' back to safety
});
Run Code Online (Sandbox Code Playgroud)

这段代码会弹出一个对话框,询问"你确定要离开Test Runner吗?" 如果用户单击取消将阻止用户离开页面.

这是另一个想法:

$(window).on('onunload', function(e) {
    var info = * some info to save the current page state *
    var r=confirm('Are you sure you want to stop the Test Runner?');
    if(r==true)
    { …
Run Code Online (Sandbox Code Playgroud)

html javascript onbeforeunload

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

F#函数参数数据类型

这是我尝试编写的F#的第一行,所以道歉,因为我可能只是不知道正确的Google搜索关键字.

我试着像这样定义一个函数:

let sigmoid x deriv = if deriv then x * (1 - x) else 1 / (1 + System.Math.Exp(-x))
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误System.Math.Exp(-x):

The type 'float' does not match the type 'int'
Run Code Online (Sandbox Code Playgroud)

我想我期待编译器对这个函数进行类型推断并定义x为float.我在这里错过了什么?

以下是我要插入的全部内容:

let sigmoid x deriv = if deriv then x * (1 - x) else 1 / (1 + System.Math.Exp(-x))

[<EntryPoint>]
let main argv = 
    sigmoid 1.0 false |> printfn "%A"
    0
Run Code Online (Sandbox Code Playgroud)

f# type-inference

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

Matlab编辑器 - 显示标签和空白字符

我最近在Matlab 2012a上编写了很多代码,我想知道是否有一些方法可以显示像Notepad ++或Sublime Text中的空格字符(制表符,空格等).

我一直在谷歌搜索并搜索SO,但互联网似乎很奇怪.

谢谢!

matlab

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

LINQ组由任意格子组合

如果我遗漏了一些非常基本的东西,请道歉.

对于给定的晶格数组,其中晶格值代表其桶的最小值,对值数组进行分组的最佳方法是什么.

例如

double[] lattice = { 2.3, 2.8, 4.1, 4.7 };
double[] values  = { 2.35, 2.4, 2.6, 3, 3.8, 4.5, 5.0, 8.1 };

GroupByLattice(values, lattice);
Run Code Online (Sandbox Code Playgroud)

这样GroupByLattice返回如下所示的IGroupings:

2.3 : { 2.35, 2.4, 2.6 }
2.8 : { 3, 3.8 }
4.1 : { 4.5 }
4.7 : { 5.0, 8.1 }
Run Code Online (Sandbox Code Playgroud)

编辑:

我对LINQ查询非常环保,这是我能做到的最好的:

values.GroupBy( curr => lattice.First( lat => curr > lat) )
Run Code Online (Sandbox Code Playgroud)

问题:

  • 一切都在第一桶中结束 - 我可以理解为什么(当然第一个桶满足每个后面的情况)但是我很难绕过这些就地操作以获得我真正想要的谓词.
  • 我怀疑在LINQ查询中有一个LINQ查询将不是非常高效

死后解决方案和结果:

德米特里·拜琴科提供了一个很好的答案,我只是想为将来可能会遇到这个答案的人提供一些跟进.我原本试图解决:如何简化绘图的庞大数据集?

对于初学者来说,我的第一次尝试实际上非常接近.由于我的格子已经订购,我只需.First( ... )要将a 更改为a.Last( ... …

c# linq

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

Unix C 套接字服务器不接受连接

事情是这样的,我正在用 C 语言(使用 unix 系统调用)编写一个简单的 tcp 套接字服务器,但我无法接受连接。

据我所知,我很好地完成了服务器初始化,但是当我尝试连接到我打印出来的端口(参见下面的代码)时,它拒绝了,就好像什么都没有一样。

更重要的是,当我 netstat 时,该端口甚至没有在使用中。我不会在当前的设置中抛出任何错误,我已经没有想法了。

int main(){

    int sock_fd;
    int conn_fd;
    struct sockaddr_in serv_addr;
    struct sockaddr_in cli_addr;
    socklen_t* serlen;
    socklen_t* clilen;
    clilen  = malloc(sizeof(socklen_t));
    serlen  = malloc(sizeof(socklen_t));
    *serlen = sizeof(serv_addr);
    *clilen = sizeof(cli_addr);

    /*=============================Create Socket=============================*/


        //Create Socket
        sock_fd = socket(AF_INET, SOCK_STREAM, 0);
            if(sock_fd<0){
                fprintf(stderr,"error creating socket\n");
                exit(1);}

        //Initialize Server Address Struct
        bzero((char *) &serv_addr, *serlen);
        serv_addr.sin_family = AF_INET;
        serv_addr.sin_addr.s_addr = INADDR_ANY;
        serv_addr.sin_port = 0;

    /*=============================Bind Address==============================*/

        //Bind socket to an address
        if(bind(sock_fd,(struct sockaddr*)&serv_addr,*serlen)<0){
            fprintf(stderr,"error …
Run Code Online (Sandbox Code Playgroud)

c sockets unix-socket

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

Windows命令行中变量的回显长度

因此,我正在寻找一个快速命令来评估Windows命令行上环境变量的长度。

从概念上讲,具有以下作用:

echo %PATH%.length
Run Code Online (Sandbox Code Playgroud)

谢谢!

windows cmd environment-variables windows-console

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