小编lau*_*une的帖子

整数算术产生一个奇怪的结果(除法后舍入?)

在Linux上使用gcc版本4.8.4,short是16位,int是32位.

#include "stdio.h"
int main( void ){
  unsigned short u = 0xaabb;
  unsigned int   v = 0xaabb;
  printf ("%08x %08x\n", u, (unsigned short)((u*0x10001)/0x100));
  printf ("%08x %08x\n", v, (unsigned short)((v*0x10001)/0x100));
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

结果:

0000aabb 0000bbab
0000aabb 0000bbaa
Run Code Online (Sandbox Code Playgroud)

这可以改变,例如,通过除以0x10,其为第一种情况产生类似的结果(+1).如果截断的字节/0x100小于0x80 ,则不会发生这种效应.第一种情况(short u)的机器代码看起来好像是要进行一些舍入(添加0xFF).

  1. 结果是什么原因还是错误?
  2. 其他编译器的结果是什么?

c

12
推荐指数
1
解决办法
712
查看次数

如何阻止Marshaller类在我的输出文件中添加XML标记

我在两个单独的步骤中编组我的对象.一个添加Header,另一个添加Body.现在当我使用这段代码

marshaller.marshal(payload, writer); 
//payload is Objects name and writer is StringWriter class object
Run Code Online (Sandbox Code Playgroud)

XML标记<?xml version="1.0" encoding="utf-8"?>在最终输出文件中添加两次.

[<?xml version="1.0" encoding="utf-8"?>]当我在编组正文部分时,如何才能第二次添加XML标记?

我已经使用了Marshaller界面的所有属性,但这没有帮助.

java xml jaxb marshalling

7
推荐指数
2
解决办法
1538
查看次数

将int转换为byte会在Netbeans和JCreator中产生不同的结果

根据OP的评论:不能再复制

我使用NetBeans开发我的Java程序,它们完美地运行.但是,当我制作我的程序的JAR文件时,它为同一输入提供了不同的输出.

我很难调试,当我int转换byte到结果范围时,我发现在NetBeans 中[-128; 128),而JCreator中的相同代码是[0; 256)

我该如何制作范围[-128; 128)

private static byte[] convertHexString(String ss) {
    try{
        byte digest[] = new byte[ss.length() / 2];
        for (int i = 0; i < digest.length; i++) {
            String byteString = ss.substring(2 * i, 2 * i + 2);
            int byteValue = Integer.parseInt(byteString, 16);
            digest[i] = (byte) byteValue;
        }
        // Test
        for(int i = 0; i < digest.length; ++i){
            System.out.println(digest[i]);
        }

        return digest;
    }
    catch(Exception e){
        return …
Run Code Online (Sandbox Code Playgroud)

java int byte casting jar

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

重载解析如何适用于std :: vector <int> :: insert

这些是insert来自std :: vector 的三个方法签名中的两个:

void insert (iterator position, size_type n, const value_type& val);
template <class InputIterator>
void insert (iterator position, InputIterator first, InputIterator last);
Run Code Online (Sandbox Code Playgroud)

现在,给定一个向量和一个插入调用,

std::vector<int> v;
v.insert( v.begin(), 3, 3 );
Run Code Online (Sandbox Code Playgroud)

怎么insert选择第一个而不是第二个?

我天真地,我确定 - 实现了相同的签名,但这里第二个(模板化)形式是由编译器选择的.

template <class T, int MAXSIZE>
class svector {
public:
  class iterator : public std::iterator<std::input_iterator_tag,T> { ... };

    // ...

  void insert (class iterator position, size_t n, const T& val){
    if( len + n > MAXSIZE ) throw std::out_of_range( "insert exceeds …
Run Code Online (Sandbox Code Playgroud)

c++ templates

3
推荐指数
1
解决办法
311
查看次数

将JAVA bean导入Drools Workbench

我开始使用KIE Drools Workbench并练习创建DRL文件,这样我就可以指导那些不是程序员创建规则的人.

我知道如何在Workbench中创建一个JAVA类,但我需要知道如何导入我已编写的类,它将成为语句的一部分.

例如:雇主 - 我在Workbench Employee中创建的类 - 我在eclipse中开发的类,希望导入Workbench

所以drl看起来像这样:

when
 $employer:Employer(isHappy == true)
then
 Employee emp = new Employee();
 emp.setSalary(100);
 insert(emp);
end
Run Code Online (Sandbox Code Playgroud)

我知道如何导入JAVA bean以在KIE Drools Workbench中使用?

谢谢!

drools

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

标签 统计

java ×2

byte ×1

c ×1

c++ ×1

casting ×1

drools ×1

int ×1

jar ×1

jaxb ×1

marshalling ×1

templates ×1

xml ×1