Каков самый простой способ добавить тот к двоичной строке в Perl?

Вам нужно предложение having там вместе с предложением where:

ids = [1,3]
Book
  .select('books.*') # not sure if this is necessary
  .where(authors_books: { author_id: ids })
  .joins(:authors_books)
  .group('books.id')
  .having('count(authors_books) >= ?', ids.size)

SQL: https://www.db-fiddle.com/f/i7TXPJgavLwQCHb4GhgH3b/0

7
задан brian d foy 21 October 2008 в 17:04
поделиться

2 ответа

То, что происходит, - то, что Вы делаете строку байтов с $ip&$netmask, и затем попытайтесь рассматривать его как число. Это не собирается работать, как таковое. К чему необходимо питаться inet_ntoa .

pack("N", unpack("N", $ip&$netmask) + 1)

Я не думаю, что существует более простой способ сделать это.

13
ответ дан 6 December 2019 в 08:46
поделиться

Путание целых чисел и строк. Возможно, следующий код поможет:

use Socket;

$ip = pack("C4", 192,168,250,66); # why not inet_aton("192.168.250.66")
$netmask = pack("C4", 255,255,255,0);

$ipi = unpack("N", $ip);
$netmaski = unpack("N", $netmask);

$ip1 = pack("N", ($ipi&$netmaski)+1);
print inet_ntoa($ip1), "\n";

Какие выводы:

192.168.250.1
8
ответ дан 6 December 2019 в 08:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: