所以代码就像它得到的一样简单
int len = 0x00000097;
Socket sock = new Socket(host, port);
DataOutputStream out = new DataOutputStream(sock.getOutputStream());
out.write(i);
out.flush();
out.write(xml_doc);
out.flush();
所以这个想法是,主机期望的是一个xml表单,但它的长度是预先的。表单只有151个字节,主机希望它的长度是一个4字节的整数,我相信这是Java语言中整数的大小,但是无论我尝试哪种流、打印和写入的
我有一个函数来切换每个十六进制数字的第0位和第3位,但它使用了26次运算。我只想把它减少到1到25次操作。仅使用位操作!~&^|+ << >>。
int swap30(int x) {
int m = 0b10001000 << 24;
int m1 = 0b10001000 << 16;
int m2 = 0b10001000 << 8;
int m3 = 0b10001000;
int mask1 = m | m1 | m2 | m3;
int z = 0b01100110
/**
* Returns index for Object x.
*/
private static int hash(Object x, int length) {
int h = System.identityHashCode(x);
// Multiply by -127, and left-shift to use least bit as part of hash
return ((h << 1) - (h << 8)) & (length - 1);
}
来自:
理论上,System.identityHashCode()
通过阅读之后,这个问题就会紧随其后。有问题的Java代码是
int count_set_bits(int n) {
int count = 0;
while(n != 0) {
n &= (n-1);
count++;
}
}
我想知道n &= (n-1)在这里实现了什么?我在另一个漂亮的算法中看到了类似的构造,用于检测一个数字是否是2的幂,比如:
if(n & (n-1) == 0) {
System.out.println("The number is a power of 2");
}
这里有一个来自Java编程入门的例子(Liang):
import java.util.LinkedList;
public class MyHashSet<E> implements MySet<E> {
// Define the default hash table size. Must be a power of 2
private static int DEFAULT_INITIAL_CAPACITY = 16;
// Define the maximum hash table size. 1 << 30 is same as 2^
我录制音频,然后用CheapAMR.java读取它。该类有一个写函数,它将读文件的字节写入一个新文件中。是否可以将for循环改为向后写入字节,所以当我播放新文件时,它实际上是向后播放的?
public void WriteFile(File outputFile, int startFrame, int numFrames)
throws java.io.IOException {
outputFile.createNewFile();
FileInputStream in = new FileInputStream(mInputFile);
FileO
typedef NS_OPTIONS (NSInteger, YYTextLineStyle) {
// basic style (bitmask:0xFF)
YYTextLineStyleNone = 0x00, ///< ( ) Do not draw a line (Default).
YYTextLineStyleSingle = 0x01, ///< (──────) Draw a single line.
YYTextLineStyleThick = 0x02, ///< (━━━━━━━) Draw a thick l
我试图对一些数据进行冒泡排序,但排序不起作用。我想我一定是在做一些很愚蠢的事。我已经非常接近地遵循了代码,从而知道实际排序alg是有问题的。
Do While Low <= High And Worksheets("Data").Cells(i, Column_EAM_WorkOrderNum) <> ""
CheckVal = (High + Low) / 2
If Worksheets("Data").Cells(i, Column_EAM_WorkOrderN