我有一段用C编写的代码,其中执行了一些指针算法.我想知道输出是怎么来的?
#include <stdio.h>
int main()
{
char arr[] = "gookmforgookm";
char *ptr1 = arr;
char *ptr2 = ptr1 + 3;
printf ("ptr2 - ptr1 = %d\n", ptr2 - ptr1);
printf ("(int*)ptr2 - (int*) ptr1 = %d", (int*)ptr2 - (int*)ptr1);
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出如下:
ptr2 - ptr1 = 3
(int*)ptr2 - (int*) ptr1 = 0
Run Code Online (Sandbox Code Playgroud) 我在 stackoverflow 中看到了在 Python 3.3 的 USB 端口中使用 pyserial 的简单代码,但我无法让它在我新安装的 pyserial 2.7 [在 Windows 7,64 位,带有 3 个 USB 端口] 上工作。pyserial 的安装很顺利,我可以毫无错误地导入,并且 Pyscripter IDE 中可以识别方法,这增强了对良好安装的信心,但是:
代码精简到产生错误的要点是:
import serial
def main():
ser = serial.Serial(port='COM2')
ser.close()
if __name__ == '__main__':
main
Run Code Online (Sandbox Code Playgroud)
由此我收到一个对话框,其中包含错误“SerialException:无法打开端口“COM2”:FileNotFoundError(2,'系统找不到指定的文件。',无,2)”
回溯指出:
*** Remote Interpreter Reinitialized ***
>>>
Traceback (most recent call last):
File "<string>", line 420, in run_nodebug
File "C:\Python33\Lib\site-packages\scanport2.py", line 19, in <module>
main()
File "C:\Python33\Lib\site-packages\scanport2.py", line 15, in main
ser = serial.Serial(port='COM2')
File "C:\Python33\Lib\site-packages\serial\serialwin32.py", line 38, in __init__ …Run Code Online (Sandbox Code Playgroud) 在Ruby 1.9.2中,我发现了一种方法,可以使两个字符串具有相同的字节,相同的编码,并且相同,但它们length返回的字符不同且不同[].
这是一个错误吗?如果它不是一个bug,那么我想完全理解它.Ruby 1.9.2 String对象中存储了哪些信息,允许这两个字符串表现不同?
下面是重现此行为的代码.开头的注释#=>向您展示了我从这个脚本获得的输出,括号中的单词告诉您我对该输出的判断.
#!/usr/bin/ruby1.9
# coding: utf-8
string1 = "\xC2\xA2" # A well-behaved string with one character (¢)
string2 = "".concat(0xA2) # A bizarre string very similar to string1.
p string1.bytes.to_a #=> [194, 162] (good)
p string2.bytes.to_a #=> [194, 162] (good)
puts string1.encoding.name #=> UTF-8 (good)
puts string2.encoding.name #=> UTF-8 (good)
puts string1 == string2 #=> true (good)
puts string1.length #=> 1 (good)
puts string2.length #=> 2 (weird!)
p string1[0] #=> …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个高级的whois客户端,所以我一直在尝试使用Arch Linux中的netcat(nc)向whois服务器发送命令.例如,这很好用:
$ echo domain google.com | nc whois.crsnic.net 43
# => nc outputs whois data for google.com
Run Code Online (Sandbox Code Playgroud)
但是,处理后缀的whois服务器.br.com是whois.centralnic.net,而该服务器似乎不能与netcat一起使用.当我给它任何查询时,它似乎只是关闭连接而没有响应:
$ echo foobar | nc whois.centralnic.net 43
# => No output from nc.
Run Code Online (Sandbox Code Playgroud)
我使用telnet成功地进行了相同的查询:
$ telnet whois.centralnic.net 43
Trying 193.105.170.136...
Connected to whois.centralnic.net.
Escape character is '^]'.
foobar
DOMAIN NOT FOUND
Connection closed by foreign host.
Run Code Online (Sandbox Code Playgroud)
那么什么可能使服务器对telnet的行为与netcat不同?
我想也许这是一个时间问题,所以我没有成功尝试:
$ { sleep 4; echo foobar; sleep 4; } | nc whois.centralnic.net 43
# => …Run Code Online (Sandbox Code Playgroud) 我有一个初始化的椭圆曲线(EC_GROUP).有没有办法得到仿射坐标的随机点?
这就是我定义曲线的方式:
BN_CTX *ctx;
EC_GROUP *curve;
BIGNUM *a, *b, *p, *order, *x, *y, *z;
EC_POINT *generator;
/* Binary data for the curve parameters */
unsigned char a_bin[28] =
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE};
unsigned char b_bin[28] =
{0xB4,0x05,0x0A,0x85,0x0C,0x04,0xB3,0xAB,0xF5,0x41,
0x32,0x56,0x50,0x44,0xB0,0xB7,0xD7,0xBF,0xD8,0xBA,
0x27,0x0B,0x39,0x43,0x23,0x55,0xFF,0xB4};
unsigned char p_bin[28] =
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01};
unsigned char order_bin[28] =
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x16,0xA2,0xE0,0xB8,0xF0,0x3E,
0x13,0xDD,0x29,0x45,0x5C,0x5C,0x2A,0x3D };
unsigned char x_bin[28] =
{0xB7,0x0E,0x0C,0xBD,0x6B,0xB4,0xBF,0x7F,0x32,0x13,
0x90,0xB9,0x4A,0x03,0xC1,0xD3,0x56,0xC2,0x11,0x22,
0x34,0x32,0x80,0xD6,0x11,0x5C,0x1D,0x21};
unsigned char y_bin[28] =
{0xbd,0x37,0x63,0x88,0xb5,0xf7,0x23,0xfb,0x4c,0x22,
0xdf,0xe6,0xcd,0x43,0x75,0xa0,0x5a,0x07,0x47,0x64,
0x44,0xd5,0x81,0x99,0x85,0x00,0x7e,0x34};
unsigned char z_bin[28] =
{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0};
/* Set up the BN_CTX */ …Run Code Online (Sandbox Code Playgroud) 我正在尝试将两个字符串值转换为单个dict
string1='red blue white'
string2= 'first second third'
dict={'red':first,'blue':second.'white':third}
Run Code Online (Sandbox Code Playgroud)
但在这里我不能使用循环!! 没有循环还有其他方法吗?帮我!!谢谢
在Ruby中工作时,我常常发现自己在使用方法!或使用普通方法之间发生冲突,将值重新赋值.我不确定何时使用什么.例如,我有2个哈希值(h1和h2),我想合并它们并将值存储在哈希值h1中,现在我应该使用
h1.merge!(h2)
还是
h1 = h1.merge(h2)?
这两者有什么区别吗?
我有一个 C 项目,它使用 arm-none-eabi-gcc 编译器在 ARM 架构上运行,现在我尝试使用 gnu99 编译器在 Windows 上本地编译它,因为我需要进行单元测试,并且很难在实际的硬件。
然而,尽管我在 makefile 中包含了内联标志,但编译器无法识别静态内联命令,如下所示:CFLAGS += -fgnu89-inline
以下是我收到的错误:
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void' __STATIC_INLINE void
Run Code Online (Sandbox Code Playgroud)
有谁知道如何让编译器识别内联命令?
所以我的问题基本上是如果找不到作为参数给出的文件,我无法找出给出错误消息的条件。
if ARGV.empty?
puts "Give me a file!"
elseif [condition]
puts "Can't find the file"
else
file = File.open(ARGV[0])
Run Code Online (Sandbox Code Playgroud)
我真正需要的是 elseif 的条件。
我试图找到一个匹配任何字符串与两个连续反斜杠的正则表达式.我正在尝试各种变化,任何帮助?和处理反斜杠的信息
b='\\mystring'
if b=~/\\\\/
puts "it matches"
end
Run Code Online (Sandbox Code Playgroud)
我似乎无法得到这个匹配.
我使用Homebrew来安装旧版本的Wine,因为我需要的程序只能在旧版本的Wine上运行.但是,我决定更新Wine,因为我已经了解到程序能够在最新版本的Wine上运行.由于我遇到了一些错误并且无法更新,我决定删除Homebrew并再次提供所有内容.一些错误说了一些关于Ruby的东西,因此我决定根据本教程将Ruby更新到版本2.1.2:http://railsapps.github.io/installrubyonrails-mac.html
然后我安装了Homebrew,它成功安装但是当我发布时brew doctor命令,我明白了:
/usr/local/Library/Homebrew/global.rb:109:in `split': invalid byte sequence in UTF-8 (ArgumentError)
from /usr/local/Library/Homebrew/global.rb:109:in `<top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/brew.rb:16:in `<main>'
Run Code Online (Sandbox Code Playgroud)
我发现了几个关于UTF-8编码问题的类似问题但没有解决我的问题.但是,我在PATH中发现了一些关于禁用字符的内容,可以通过发布来查找echo $PATH,显示如下:
/usr/local/bin:/Users/Martin/.rvm/gems/ruby-2.1.2/bin:/Users/Martin/.rvm/gems/ruby-2.1.2@global/bin:/Users/Martin/.rvm/rubies/ruby-2.1.2/bin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin??n’export??n’export:/Users/Martin/.rvm/bin
Run Code Online (Sandbox Code Playgroud)
我知道我可能需要在某处更改某些内容但请记住,我是一名缺乏经验的用户,只掌握命令行的基本知识.我不知道Ruby是什么以及它是什么.如果你能帮我,我真的很感激.非常感谢你提前.
我正在使用 secp256r1 曲线和使用 BouncyCastle 的 SHA256 算法实现 ECDSA 签名生成。
对于某些输入,签名长度为 127 个字符。我觉得开头的“0”被删除了,因为签名被存储到 ECDSASigner 类中的 BigInteger 数据类型。
我已经使用确定性方法添加了来自 rfc6979 ECDSA 签名的样本
代码的相关部分:-
//Private key used in hex format -C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721
String secretNumberK = "09F634B188CEFD98E7EC88B1AA9852D734D0BC272F7D2A47DECC6EBEB375AAD4";
SecureRandom secureRandom = new FixedSecureRandom(Hex.decode(secretNumber));
ECPrivateKeyParameters ecPrivateKeySpec = Util.getECPriKeyParameter(ecPrivateKey);//it is the PrivateKey of the sample shown
byte[] messageInHex = Hex.decode("test");
ECDSASigner ecdsaSigner = new ECDSASigner();
ecdsaSigner.init(true, new ParametersWithRandom(ecPrivateKeySpec,
secureRandom));
BigInteger[] sig = ecdsaSigner.generateSignature(Util
.generateSHAHash(messageInHex));
flag = true;
LOG.debug("r:: " + sig[0].toString(16).toString());
LOG.debug("s:: " + sig[1].toString(16).toString()); …Run Code Online (Sandbox Code Playgroud) a = [1,2,3,4,5]
b = [5,6,7,8,9]
Run Code Online (Sandbox Code Playgroud)
你能告诉我以下的时间复杂度是多少:
a, b = b, a
Run Code Online (Sandbox Code Playgroud)
将?
我猜测 O(n+m),其中 n 和 m 是各自列表的长度。