小编krb*_*686的帖子

在c ++中快速将原始数据转换为十六进制字符串

我正在从文件中读取数据并尝试将原始数据显示为2位十六进制字符串.

我正在使用Qt框架,特别是QTextEdit.

我尝试了很多不同的方法,几乎​​完成了我想要它做的事情,但它有一些我不知道的意外错误.

目前这是我的实施:

1)读入数据:

ifstream file (filePath, ios::in|ios::binary|ios::ate);
if (file.is_open())
{
    size = file.tellg();
    memblock = new char [size+1];
    file.seekg(0, ios::beg);
    file.read(memblock, size);
    file.close();
}
Run Code Online (Sandbox Code Playgroud)

2)创建一个将使用的QString(因为QTextEdit需要一个QString):

QString s;
Run Code Online (Sandbox Code Playgroud)

3)循环遍历数组,将每个连续的字符附加到QString.

int count = 0;
for(i=0;i<size;i++)
{
    count++;;
    s.append(QString::number(memblock[i], 16).toUpper());
    s.append("\t");
    if (count == 16)
    {
        s.append("\n");
        count -= 16;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在这个工作正常,除非它到达一个角色FF,它显示为FFFFFFFFFFFFFFFF

所以我的主要问题是:

  1. 为什么只有'FF'字符显示为'FFFFFFFFFFFFFFFF'?
  2. 有没有办法将char数据转换为基本16字符串而不使用QString :: number?

我希望这个实现尽可能快,所以如果像sprintf这样的东西可以工作,请告诉我,因为我猜想QString :: number可能会更快.

c++ qt char

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

在node.js中需要模块时捕获错误

似乎无法在任何地方找到任何文章.我基本上想从程序中捕获"无法找到模块"错误,并可选择安装它,但我似乎无法捕获任何错误,即使在我的require语句中使用try/catch也是如此.这甚至可能吗?我没有在任何地方看到它.

例如:

try {
  var express = require('express');
} catch (err){
   console.log("Express is not installed.");
   //proceed to ask if they would like to install, or quit.
   //command to run npm install
}
Run Code Online (Sandbox Code Playgroud)

我想这可以通过单独的.js启动文件来完成,而不需要任何第三方需要,并且只是fs用来检查node_modules,然后可选地npm install从子进程运行,然后node app与另一个子进程运行.但感觉从单个app.js文件中执行此操作会更容易

javascript error-handling require node.js

12
推荐指数
2
解决办法
8810
查看次数

try-catch-finally块是否在node.js中同步?

我在节点程序中的子进程中运行了一些代码,如下所示:

try{
    var data = fs.readFileSync(urlPath, {"encoding":"utf8"});
} catch (err) {
    console.log("Error reading url file...");
    throw err;
} finally {
    console.log("File read!");
    var array = data.split("\n");

    console.log("Found " + array.length + " urls");
Run Code Online (Sandbox Code Playgroud)

此代码从另一个节点程序调用,需要等待此文件中的所有操作完成.不幸的是,在finally执行块下的任何代码之前,子进程正在退出代码0 .

这让我相信即使try-catch-finally是异步也是如此.那是对的吗?

asynchronous try-catch child-process node.js

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

Three.js + leaflet = 3D地图?

这可能是一项非常重要的任务,但我正在寻找可以帮助我用传单创建3D地图的东西.我已经开始运行传单,我只想将它们转换为3D透视图.

我唯一的目的是以3D形式展示建筑物.我已经使用过OSM Buildings,但它们并不是真正的3D.

我还发现了Pelican Mapping的ReadyMap,它已经支持Leaflet,但我不能让这个API成功运行,因为他们有一段时间没有更新它.我已经问过他们的Github了,所以除非我能弄清楚如何解决ReadyMap问题(并且他们的src是成千上万行),所以现在没有太多来自这条路.我也不知道OSM建筑物是否可以与ReadyMap一起使用.

所以现在,我正在寻找其他任何选择.我最大的两个前景是

铯AGI

three.js所

我基本上希望我的最终结果看起来像这样:

转到此处,然后单击右侧的"地球".

任何帮助将不胜感激!

javascript 3d map three.js leaflet

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

将STD_LOGIC_VECTOR中的单个位分配给STD_LOGIC

好像我已经做了很多次,但由于某种原因,今天它只是不想工作.

我想将16位向量的MSB分配给单位变量.

Din : in  STD_LOGIC_VECTOR (15 downto 0);

...

signal signBit : std_logic;

begin
    signBit <= Din(15 downto 15);
Run Code Online (Sandbox Code Playgroud)

给出的错误是:

Type of signBit is incompatible with type of Din.
Run Code Online (Sandbox Code Playgroud)

是的,我得到它,向量与std_logic不一致,但这是1位,清楚地表示为(15 downto 15)

vhdl

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

Typedef结构声明为两种类型:"typedef struct x {..} X,*XPointer"

对不起,如果之前有人询问,我甚至不确定要搜索什么来提出这个问题.

当我创建一个时typedef struct,我通常做这样的事情:

typedef struct myStruct {
  int a;
  int b;
  struct myStruct *next;
} MyStruct;
Run Code Online (Sandbox Code Playgroud)

所以我最后宣布它MyStruct.然后,当我创建将其作为参数传递的函数时,我写道

int doSomething(MyStruct *ptr){

}
Run Code Online (Sandbox Code Playgroud)

然而,我对一个项目的朋友合作,我所遇到他的代码风格,这是声明*MyStructP是这样的:

typedef struct myStruct {
  int a;
  int b;
  struct myStruct *next;
} MyStructR, *MyStructP;
Run Code Online (Sandbox Code Playgroud)

然后他MyStructP在他的函数中使用,所以他的参数看起来像:

int doSomething(MyStructP)
Run Code Online (Sandbox Code Playgroud)

所以他不必*在参数列表中使用.这让我很困惑,因为当我查看参数列表时,我总是寻找*确定arg是否为指针的方法.最重要的是,我正在创建一个函数,它接受我创建的结构和他创建的结构,所以我的arg有*而他的没有.超级混乱!!

有人可以就两者之间的差异提供见解/比较/建议吗?优点?缺点?哪种方式更好或更差,还是更广泛使用?任何信息都可以.谢谢!

c struct pointers

10
推荐指数
2
解决办法
718
查看次数

VHDL - 将两个8位向量添加到9位向量中

这是一个非常简单的问题,但我还没有能够完成这项工作,也没有任何搜索谷歌或这里发现任何真正有用的东西.

我要做的就是添加两个8位向量并将结果存储在9位向量中.

signal operand1, operand2 : STD_LOGIC_VECTOR(7 downto 0);

signal sum : STD_LOGIC_VECTOR(8 downto 0);

sum <= operand1 + operand2;
Run Code Online (Sandbox Code Playgroud)

但是我收到了警告:

Width mismatch. <sum> has a width of 9 bits but assigned expression is 8-bit wide.
Run Code Online (Sandbox Code Playgroud)

难道VHDL不应该有某种内置例程来知道额外的溢出需要额外的位吗?

我有这些包:

use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
Run Code Online (Sandbox Code Playgroud)

也许STD_LOGIC_VECTOR总是签名?如果是这样,那么我需要将它们明确定义为无符号?

overflow vhdl

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

使用sed在行首和行尾添加引号

我知道sed 's/^/"/g'适用于一行的开头,sed 's/$/"/g'适用于结尾,但为什么sed 's/[^$]/"/g'对两者都不起作用?

regex sed

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

Qt Designer - 如何将信号连接到静态函数?

好的,我正在使用 Qt Designer 来构建 GUI。我已经设法弄清楚如何制作 menuBar 并且我已经向栏添加了一些动作,但现在我需要连接这些动作以使它们做一些事情。

具体来说,在我的文件菜单上,我有简单的打开操作。我希望此操作运行一个调用我的 QFileDialog 等的函数,但我不知道如何执行此操作。

那么,如何将 actionOpen 连接到静态函数?

我正在使用最新的 Qt,5.0.2

我在这里有点沮丧。这显然是某人可能需要做的最基本的事情之一,但我在网络上的任何地方都找不到任何真正的解决方案。从缺乏 Qt wiki 到其他人的问题,似乎没有人真正有明确的答案。旧版本的 Qt 有答案,但在那些旧版本中,信号显然无法连接到静态函数,所以这些都是无关紧要的。似乎没有人知道如何通过 Qt Designer 做到这一点。此外,没有人会澄清该放什么。

我的 main.cpp 文件中有这一行:

QObject::connect(actionOpen, &actionOpen::triggered, fileOpen)
Run Code Online (Sandbox Code Playgroud)

我在 Qt 设计器中创建了一个名为“actionOpen”的对象,有一个名为“触发”的信号,我在 main.cpp 中的 main 下方定义了一个名为“fileOpen”的函数。这似乎遵循正确的语法,但它会引发许多错误。

此外,我可以在 Qt Creator 中反复单击构建,每次它都会出现不同数量的错误,消失和重新出现,我什至没有接触代码。我开始认为这个 IDE 有点像 POS。

编辑:

这是我的文件。也许这会有所帮助。

主窗口.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

public slots:
    void fileOpen();

private:
    Ui::MainWindow *ui; …
Run Code Online (Sandbox Code Playgroud)

c++ qt signals-slots qt-designer

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

Bash脚本 - 反引号/ grep正则表达式字符串中的变量扩展

我正在尝试在正则表达式搜索字符串内部的反引号内部扩展我的bash脚本中的变量.

我希望$VAR被替换.

我匹配的线条如下:

start....一些人物...... id:一些人物[variable im searching for]......一些人物......end

var=`grep -E '^.*id:.*$VAR.*$' ./input_file.txt`
Run Code Online (Sandbox Code Playgroud)

这有可能吗?

它似乎不起作用.我知道我可以正常扩展变量"$VAR",但这不会直接搜索正则表达式中的那些字符吗?我不确定这里优先考虑的是什么.

regex bash scripting grep

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