- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这将是一个有点长的问题,但请耐心等待,我会尽力解释它。对于一个简单的统计练习,我试图读取某个数据集,但数据的格式非常奇怪。让我们从一个示例数据数组开始。数据在内部按照 8 block 编号进行组织。
[101, 103, 253, 253, 253, 102, 104, 254, 73, 32, 100, 111, 110, 39, 116, 32, 107, 110, 111, 119, 32, 119, 104, 97, 116, 32, 105, 115, 32, 32, 32, 32, 254, 254, 101, 102, 254, 254, 254, 0]
在数据文件中,有一些案例和一些变量(在本例中为 3 个变量和 3 个案例。一个案例可以被视为调查问卷的“受访者”)。
变量看起来像这样(只有一些值相关)
Variable A: Length 8 (regular number)
Variable B: Length 8 (regular number)
Variable C: Length 20 (string)
这意味着变量 A 将占用 1 个字节,变量 B 也将占用,变量 C 将占用 3 个字节 (ceil(20/8))。
如果一个值在 1 到 251 之间,我需要使用“值 - 一定的偏差”。在本例中为 100'
此时,数据如下:
Case 1 Variable A: 1
Case 1 Variable B: 3
但是,并非每个值都适合“一个字节”。例如,变量 C 是一个字符串变量,并且可能有多个字节。这就是 253
值的用武之地。
值 253
表示:“下一个 8 字节 block 将是该变量的值”。 253 的多个值意味着该一个值将有多个 block 。在本例中,我们知道变量 C 需要 3 个字节。所有这 3 个字节的值都是 253
,因此我们知道我们需要在该 block 之后读取 3 个 8 字节的 block 。
从数组的第 8 个元素开始,即:
[73, 32, 100, 111, 110, 39, 116, 32, 107, 110, 111, 119, 32, 119, 104, 97, 116, 32, 105, 115, 32, 32, 32, 32]
将其转换为字符串可以得到:
“我不知道那是什么”
所以此时的数据将是这样的:
Case 1 Variable A: 1
Case 1 Variable B: 3
Case 1 Variable C: 'I don't know what is'
之后我们继续处理数据。我们停在最后一个 253,所以现在还有两个数字(102 和 104,意思是 2 和 4)。
此时数据将是这样的:
Case 1 Variable A: 1
Case 1 Variable B: 3
Case 1 Variable C: 'I don't know what is'
Case 2 Variable A: 2
Case 2 Variable B: 4
现在我们看到值为 254。这意味着“空字符串”。请注意变量 C(当前变量)的长度为 3 个字节。这个 block 中只剩下 1 个字节了。因此我们需要跳过已经读取的 block ,并在那里再读取两个字节。下一个 block 是:
[254, 254, 101, 102, 254, 254, 254, 0]
这将使情况 2 变量 C 的值变为 254, 254, 254,从而产生以下数据集:
Case 1 Variable A: 1
Case 1 Variable B: 3
Case 1 Variable C: 'I don't know what is'
Case 2 Variable A: 2
Case 2 Variable B: 4
Case 2 Variable C: ''
之后,我们还有一些值需要解释,从而形成最终数据集:
Case 1 Variable A: 1 - (101)
Case 1 Variable B: 3 - (103)
Case 1 Variable C: 'I don't know what is' (253, 253, 253 = read 3 blocks: [73, 32, 100, 111, 110, 39, 116, 32, 107, 110, 111, 119, 32, 119, 104, 97, 116, 32, 105, 115, 32, 32, 32, 32]
Case 2 Variable A: 2 - (102)
Case 2 Variable B: 4 - (104)
Case 2 Variable C: '' - (254, 254, 254)
Case 3 Variable A: 1 - (101)
Case 3 Variable B: 2 - (102)
Case 3 Variable C: '' - (254, 254, 254)
用头脑来做这件事似乎很容易。以编程方式执行此操作一直是我无法理解的事情。有人有什么想法吗?
最佳答案
我不清楚如何将 C 的值转换为字符串,但这段代码将帮助您完成 90% 的转换:
function Reader(array){
this.blocks = [];
while(array.length){
this.blocks.push(array.splice(0,8));
}
this._currentBlock = this.nextBlock();
}
Reader.prototype = {
currentBlock: function(){
if(!this._currentBlock.length){
this._currentBlock = this.nextBlock();
}
return this._currentBlock;
},
readNext: function(count){
count = count || 1;
var output = [];
while(count--){
var value = this.currentBlock().shift();
switch(value){
case 253: value = this.nextBlock(); break;
case 254: value = []; break;
default : value = [value]; break;
}
output = output.concat(value);
}
return output;
},
nextBlock: function(){
return this.blocks.shift();
},
peek: function(){
return this._currentBlock[0];
},
buildCases: function(){
var cases = [];
do{
var obj = {};
var i = cases.length + 1;
obj['Case ' + i + 'Variable A'] = this.readNext();
obj['Case ' + i + 'Variable B'] = this.readNext();
obj['Case ' + i + 'Variable C'] = this.readNext(3);
cases.push(obj);
}
while(this.peek() !== 0);
return cases;
}
};
var reader = new Reader([101, 103, 253, 253, 253, 102, 104, 254, 73, 32, 100, 111, 110, 39, 116, 32, 107, 110, 111, 119, 32, 119, 104, 97, 116, 32, 105, 115, 32, 32, 32, 32, 254, 254, 101, 102, 254, 254, 254, 0]);
var cases = reader.buildCases();
关于javascript - 基于多个因素转换 Javascript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24362368/
The proper divisors of a positive integer, n, are all the positive integers that divide n evenly oth
我有这个命令行 $ sudo find /etc/grub.d | sort | tail -n 1 | xargs sudo cat | wc 我想用一个 sudo 命令执行 $ sudo --so
选项大小策略和拉伸(stretch)因子如何影响小部件的大小? 下图显示了三个不同排列的窗口的预览。对于所有三个窗口 (W1-W3),右侧的小部件是一个 QFrame 小部件,其水平和垂直大小策略设置
每次当我必须重新编码一组变量时,我都会想到 SPSS 重新编码功能。我必须承认这很简单。有一个类似的recode函数在 car包,它可以解决问题,但让我们假设我想用 factor 完成任务. 我有 d
这个问题在这里已经有了答案: Template issue causes linker error (C++) [duplicate] (6 个答案) 关闭 9 年前。 我的问题查了没用所以特地来问
我想使用 Eigen 来计算稀疏矩阵的 cholesky 分解。但是,结果不正确,我找不到原因。我如何获得正确答案? Eigen 中是否实现了特殊例程,利用稀疏矩阵的结构来提高性能(例如,对于下例中的
我正在尝试使 angularjs 应用程序在配置( http://12factor.net/config )方面符合 12 因素。 它应该取决于环境,我不应该看到 development 字样, te
我在我的项目中使用 Soil,我在我的包含目录中添加了 soil,在我的预编译头文件中我包含了“Soil.h”。对于我预编译头中的库,我添加了这个: #pragma comment(lib,"SOIL
在我的 Web 应用程序中,我将所有最终用户的日期信息以 UTC 格式存储在数据库中,在向他们显示之前,只需将 UTC 日期转换为他们选择的时区。 我正在使用此方法将本地时间转换为 UTC 时间(在存
我的申请是 Piwik Server从放置在数百个网站上的跟踪代码接收传入的跟踪数据。当这些跟踪请求进入时,大部分工作负载是每秒向数据库写入数百次。我使用的是带有 JDBC 和 Hibernate 的
我有一个非常简单的 GWT 应用程序,它收集一些数据并在用户单击“提交”时提供确认对话框。我创建了一个 com.google.gwt.user.client.ui.DialogBox,填充它,然后调用
我正在使用 Delphi(2009 年,没关系)和 IBX,并且我正在尝试执行简单的代码: TestSQL.ExecQuery; 在此代码之前,我已检查(也可以在调试器监视中看到)TestSQL.Tr
许多线性代数例程都将常量(例如 alpha 和 beta)作为参数。例如cublas?GEMM执行以下操作: C := alpha*op( A )op( B ) + betaC 假设我将 beta 设
我是一名优秀的程序员,十分优秀!