小编Tom*_*Tom的帖子

C++中的64位ntohl()?

手册页htonl()似乎暗示您只能将其用于最多32位值.(实际上,ntohl()定义为无符号长整数,在我的平台上是32位.我想如果无符号长整数是8个字节,它将适用于64位整数).

我的问题是我需要将64位整数(在我的例子中,这是一个无符号长long)从big endian转换为little endian.现在,我需要进行特定的转换.但ntohl()如果目标平台WAS大端,如果函数(如)不会转换我的64位值,它会更好.(我宁愿避免添加我自己的预处理器魔法来做到这一点).

我可以用什么?如果它存在,我想要标准的东西,但我愿意接受实施建议.我在过去使用过工会看过这种类型的转换.我想我可以拥有一个带有unsigned long long和char [8]的联合.然后相应地交换字节.(显然会在大端的平台上破解).

c++ linux 64-bit endianness

59
推荐指数
8
解决办法
8万
查看次数

在python线程安全中修改类变量?

我正在读这个问题(你不必阅读,因为我会复制那里的东西......我只是想告诉你我的灵感)......

所以,如果我有一个类来计算创建了多少个实例:

class Foo(object):
  instance_count = 0
  def __init__(self):
    Foo.instance_count += 1
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我在多个线程中创建Foo对象,instance_count是否正确?类变量是否可以安全地从多个线程修改?

python multithreading

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

正则表达式实现细节

我回答的一个问题让我想知道:

如何在Python中实现正则表达式?那里有什么样的效率保证?实施是"标准",还是可以改变?

我认为正则表达式将作为DFA实现,因此非常有效(最多需要对输入字符串进行一次扫描).Laurence Gonsalves提出了一个有趣的观点,即并非所有Python正则表达式都是常规的.(他的例子是r"(a +)b\1",它匹配a的一些数量,ab,然后是与之前相同数量的a).使用DFA显然无法实现这一点.

那么,重申一下:Python正则表达式的实现细节和保证是什么?

如果有人可以给出某种解释(根据实现),为什么正则表达式"cat | catdog"和"catdog | cat"导致字符串"catdog"中的搜索结果不同,这也是很好的.在我之前提到的问题中提到过.

python regex

13
推荐指数
2
解决办法
5917
查看次数

python的url builder

我知道urllib并且urlparse,但我想确保我不会重新发明轮子.

我的问题是我将通过urllib库从同一个域中获取一堆URL .我基本上希望能够生成使用不同路径和查询参数的URL(作为字符串).我希望有些东西可能有这样的语法:

url_builder = UrlBuilder("some.domain.com")
# should give me "http://some.domain.com/blah?foo=bar
url_i_need_to_hit = url_builder.withPath("blah").withParams("foo=bar")  # maybe a ".build()" after this
Run Code Online (Sandbox Code Playgroud)

基本上我希望能够存储传递给它的默认值,urlparse.urlunsplit而不是通过每次传入整个元组来不断地使代码混淆.

这样的事情存在吗?人们是否认为值得一起投掷?

python url

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

如何在flex和bison中使用C++?

我有一个学校项目,我们需要使用flex和bison.我想使用C++,这样我就可以访问我编写的STL和我自己的类.我们获得了以下Makefile:

CC = gcc 
CFLAGS = -g 

OBJs = parse.tab.o symtab.o attr.o lex.yy.o 

default: parser

parser: ${OBJs}
    ${CC} ${CFLAGS} ${OBJs} -o parser -lfl

lex.yy.c: scan.l parse.tab.h attr.h
    flex -i scan.l

parse.tab.c: parse.y attr.h symtab.h
    bison -dv parse.y

parse.tab.h: parse.tab.c

clean:
    rm -f parser lex.yy.c *.o parse.tab.[ch] parse.output

depend:
    makedepend -I. *.c
Run Code Online (Sandbox Code Playgroud)

scan.l和parse.y有一些初始的flex/bison东西来生成扫描器和解析器.我需要将自己的东西添加到这些文件中.symtab.{h,c}应该是符号表的实现.attr.{h,c}用于某些属性魔法.我想制作symtab.ca .cc文件,以便我可以使用STL.我还有其他原因想要使用C++.

我尝试使用parse.ypp文件,以便生成.cpp文件.但问题是我没有得到正确的.h文件.我将Makefile更改为如下所示:

CC = g++          # Change gcc to g++
CFLAGS = -g 

OBJs = lex.yy.o parse.tab.o symtab.o attr.o

default: lex.yy.c parser    # added lex.yy.c so I could …
Run Code Online (Sandbox Code Playgroud)

c c++ bison flex-lexer

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

android:简单的LinearLayout和fill_parent问题

我确定我错过了一些简单的东西......

背景:

我是Android和UI设计的新手,我只想玩布局.现在我想在文本标签的顶部堆叠一个复选框.我使用以下xml布局工作正常:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <CheckBox android:id="@+id/check_box"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/check_box_text" />

    <TextView android:id="@+id/dummy_display"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/dummy_label" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我的测试(只是为了了解事情的运作方式):

  • 场景1)当我设置CheckBox's layout_height"fill_parent",CheckBox占据整个屏幕并且对齐中心(即 - TextView消失).

  • 场景2)如果我 改为TextView's 设置layout_height"fill_parent",CheckBox不会消失.事实上,没有什么消失,并且布局看起来与上面的xml相同,其中所有内容都被推到左上角.

问题(及评论):

方案1的工作方式如何?

这种行为似乎与我不一致.我认为fill_parent只应该让元素填满父级中可用的空间.所以对我来说,似乎TextView应该得到它需要的任何空间(因为它是wrap_content),但是它CheckBox应该占据空间的其余部分(因此TextView它将被强制到屏幕的底部,但不是不可见的).换句话说......场景2对我有意义,但场景1没有.

请解释 :-).

谢谢,

汤姆

xml layout user-interface android

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