char buffer_b[5] = { 0xDA, 0x00, 0x04, 0x00, 0x07 };
printf("%d\n%d\n%d", buffer_b[0], buffer_b[2], buffer_b[4]);
Run Code Online (Sandbox Code Playgroud)
这给了我输出:
-38
4
7
Run Code Online (Sandbox Code Playgroud)
但是我期待:
218
4
7
Run Code Online (Sandbox Code Playgroud)
谢谢.
我想根据选择框的值显示和隐藏表的行,这适用于Firefox但不适用于IE:
<select onChange="javascript: toggle(this.value);">
<option value="cat0">category 0</option>
<option value="cat1">category 1</option>
</select>
<table>
<tr name="cat0">
<td>some stuff v</td>
<td>some stuff v</td>
</tr>
<tr name="cat0">
<td>some stuff d</td>
<td>some stuff d</td>
</tr>
<tr name="cat1">
<td>some stuff a</td>
<td>some stuff a</td>
</tr>
<tr name="cat1">
<td>some stuff b</td>
<td>some stuff b</td>
</tr>
</table>
<script type="text/javascript">
function toggle(category)
{
// turn everything off
for (var i = 0; i < 2; i++)
{
var cat = document.getElementsByName('cat' + i);
for (var j = 0; j …Run Code Online (Sandbox Code Playgroud) 在我看来,其中一些应该失败,但他们都输出了他们应该:
$, = "\n";
%test = (
"one" => ["one_0", "one_1"],
"two" => ["two_0", "two_1"]
);
print @{$test{"one"}}[0],
@{$test{"one"}}->[0],
$test{"two"}->[0],
$test{"one"}[1];
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
通过在第二个代码片段中直接声明NS,可以完成同样的事情,以下示例中返回方法的重点是什么?
1:
var NS = function() {
return {
method_1 : function() {
// do stuff here
},
method_2 : function() {
// do stuff here
}
};
}();
Run Code Online (Sandbox Code Playgroud)
2:
var NS = {
method_1 : function() { do stuff },
method_2 : function() { do stuff }
};
Run Code Online (Sandbox Code Playgroud) 是否有更好/更简单的方法\w+从现有字符串创建字符串?
char *FixName(char *name)
{
char *ptr, tmp;
char *new = malloc(strlen(name)+1);
sprintf(new, "str_");
for (ptr = name + 4; *ptr; ptr++)
{
if ((*ptr >= '0' && *ptr <= '9') ||
(*ptr >= 'A' && *ptr <= 'Z') ||
(*ptr >= 'a' && *ptr <= 'z') ||
*ptr == '_')
{
tmp = *(ptr+1);
*(ptr+1) = '\0';
strcat(new, ptr);
*(ptr+1) = tmp;
}
}
free(name);
return new;
}
// USAGE:
//char *j = strdup("str_[](1.00)");
//printf("J: %s\n", j); …Run Code Online (Sandbox Code Playgroud) 考虑以下代码:
char *strs[] = { "string1", "string2", NULL };
char *ptr1 = NULL, *ptr2 = NULL, *tmp;
short iter = 0;
tmp = ptr1;
while (iter < 2)
{
tmp = strdup(strs[iter]);
tmp = ptr2;
iter++;
}
printf("1: %s\n2: %s\n", ptr1, ptr2);
Run Code Online (Sandbox Code Playgroud)
我希望这输出"string1 \nstring2 \n",但str1和str2保持为null.我究竟做错了什么?
让我说我有这个
char *something[] = {
"/bi",
"-c",
"5",
NULL,
NULL
};
Run Code Online (Sandbox Code Playgroud)
但是我想用十六进制声明它,我该怎么做呢; 编译器一直在向我发错:
char *something[] = {
{0x2f,0x62,0x69},
{0x2d,0x63},
{0x35},
{0x00},
{0x00}
};
Run Code Online (Sandbox Code Playgroud)
为此添加其他内容,0x00总是为空?0x00总是在NULL为-1的系统上转换为NULL?
以下代码是生产时我编译它在32位系统的警告:
1087: warning: integer constant is too large for "long" type; 我怎么能解决这个问题所以我没有得到那个警告,它在32位上运行正常?
有效的输入是:
unsigned char str[] = "\x00\x17\x7c\x3a\x67\x4e\xcb\x01";
Run Code Online (Sandbox Code Playgroud)
并且mypow函数返回unsigned long long.
unsigned long long high, low, nano;
high = // line 1087
(str[7]&0xff) * mypow(2,56) +
(str[6]&0xff) * mypow(2,48) +
(str[5]&0xff) * mypow(2,40) +
(str[4]&0xff) * mypow(2, 32);
low =
(str[3]&0xff) * mypow(2,24) +
(str[2]&0xff) * mypow(2,16) +
(str[1]&0xff) * mypow(2,8) +
(str[0]&0xff);
nano = ((high + low)/10000000) - (unsigned long long)11644473600;
return localtime((time_t*)&nano);
Run Code Online (Sandbox Code Playgroud) 我在Mac上运行程序时遇到此问题; linux 64和32位都很好,但在mac上我得到了一堆:
*** malloc[437]: error for object 0xbfffe970:
Non-aligned pointer being freed (2)
Run Code Online (Sandbox Code Playgroud)
在我的程序执行结束时,我在数据结构中释放了一堆指针.代码很长,但有没有人知道为什么它没有错误在linux上工作但不是mac?
我正在看一些c ++/c代码,开源的ovaldi项目.我看到它们在发行版中包含pcre.dll,并在代码中调用该库中的函数; 但他们永远不会加载DLL; 它们只包含pcre.h头文件,似乎可以访问这些函数.他们真的只是用静态库构建并在发生意外时分发pcre.dll,还是有办法做到这一点?
c ×7
c++ ×2
javascript ×2
32bit-64bit ×1
arrays ×1
dhtml ×1
dll ×1
hash ×1
html ×1
linker ×1
namespaces ×1
pcre ×1
perl ×1
strdup ×1
string ×1