相关疑难解决方法(0)

如何在Kotlin中正确处理大于127的字节值?

想象一下,我有一个带有变量b类型的Kotlin程序,Byte外部系统写入的值大于127."外部"意味着我无法更改它返回的值的类型.

val a:Int = 128 val b:Byte = a.toByte()

无论a.toByte()b.toInt()回报-128.

想象一下,我想128从变量中获取正确的值()b.我该怎么做?

换句话说:什么实现magicallyExtractRightValue会使以下测试运行?

@Test
fun testByteConversion() {
    val a:Int = 128
    val b:Byte = a.toByte()

    System.out.println(a.toByte())
    System.out.println(b.toInt())

    val c:Int = magicallyExtractRightValue(b)

    Assertions.assertThat(c).isEqualTo(128)
}

private fun magicallyExtractRightValue(b: Byte): Int {
    throw UnsupportedOperationException("not implemented")
}
Run Code Online (Sandbox Code Playgroud)

更新1:Thilo建议的解决方案似乎有效.

private fun magicallyExtractRightValue(o: Byte): Int = when {
    (o.toInt() < 0) -> 255 + o.toInt() + 1 …
Run Code Online (Sandbox Code Playgroud)

types type-conversion kotlin

23
推荐指数
1
解决办法
7914
查看次数

在Kotlin中创建ByteArray

从常量十六进制创建字节数组是否有更好/更短的方式比下面的版本?

byteArrayOf(0xA1.toByte(), 0x2E.toByte(), 0x38.toByte(), 0xD4.toByte(), 0x89.toByte(), 0xC3.toByte())
Run Code Online (Sandbox Code Playgroud)

我试图把0xA1没有,.toByte()但我收到语法错误投诉说integer literal does not conform to the expected type Byte.放整数很好,但我更喜欢十六进制形式,因为我的源是十六进​​制字符串.任何提示将不胜感激.谢谢!

kotlin

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

使用十六进制数初始化无符号字节数组

我知道Java中缺少无符号字节 然后如何使用0到255之间的整数(十六进制)初始化字节数组?

    final byte assoc_resp_msg_int[] = new byte[] {
            0xe3, 0x00, //APDU CHOICE Type(AareApdu)
            0x00, 0x2c, //CHOICE.length = 44
            0x00, 0x00, //result=accept
            0x50, 0x79, //data-proto-id = 20601
            0x00, 0x26, //data-proto-info length = 38
            0x80, 0x00, 0x00, 0x00, //protocolVersion
            0x80, 0x00, //encoding rules = MDER
            0x80, 0x00, 0x00, 0x00, //nomenclatureVersion
            0x00, 0x00, 0x00, 0x00, //functionalUnits, normal Association
            0x80, 0x00, 0x00, 0x00, //systemType = sys-type-manager
            0x00, 0x08, //system-id length = 8 and value (manufacturer- and …
Run Code Online (Sandbox Code Playgroud)

java unsigned byte

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

android/java中的校验和计算

我在android/java中写了一个校验和计算函数.功能如下

void CalculateCheckSum( byte[] bytes ){
     short CheckSum = 0, i = 0;
     for( i = 0; i < bytes.length; i++ ){
        CheckSum = (short) ((short)CheckSum + (short)bytes[i]);
     }

     Log.i("Checksum", Integer.toHexString(CheckSum));
}
Run Code Online (Sandbox Code Playgroud)

计算校验和的输入值为0xEF,0x01,0xEF,0x01,0x33,0x0C,0xB8,0xE5,0xFC,0x34,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF.我手动计算校验和值,结果是0xCE4.使用上述功能时,我得到的答案是0xFFFFFFE4.在我的计算中是否有任何错误,如果是,那么请纠正我.

谢谢

java android

8
推荐指数
1
解决办法
5195
查看次数

char类型可以归类为整数吗?

刚才我读到"char是Java中唯一的无符号整数基本类型".这是否意味着char是Java中不可或缺的类型之一?

与C相同,最近我读过C类型包括标量类型,函数类型,联合类型,聚合类型,标量类型包括指针类型和算术类型,然后算术类型包括整数类型和浮点类型,整数类型包括枚举类型和字符类型.

char类型真的可以归类为Java和C中的整数吗?

c java char

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

Java int到无符号字节

简而言之,我正在从一个文件中读取一些整数值,然后我需要将它们存储在一个字节数组中,以便以后写入另一个文件.

例如:

int number = 204;
Byte test = new Byte(Integer.toString(number));
Run Code Online (Sandbox Code Playgroud)

此代码抛出:

java.lang.NumberFormatException: Value out of range. Value:"204" Radix:10
Run Code Online (Sandbox Code Playgroud)

这里的问题是一个字节只能存储-127 - 128,所以很明显这个数字太高了.我需要做的是将数字签名,这是值-52,它将适合字节.但是,我不确定如何实现这一目标.

任何人都可以建议吗?

谢谢

java signed byte integer

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

如何在Java中将字符串的二进制表示转换为字节?

正如标题所说,我该怎么做?它很容易从字符串转换 - >字节 - >字符串二进制,但如何转换回来?以下是一个例子.输出为:'f'为二进制:01100110 294984

我在某处读到了我可以使用Integer.parseInt但显然并非如此:(或者我做错了什么?

谢谢, :)

public class main{
    public static void main(String[] args) {

         String s = "f";
          byte[] bytes = s.getBytes();
          StringBuilder binary = new StringBuilder();
          for (byte b : bytes)
          {
             int val = b;
             for (int i = 0; i < 8; i++)
             {
                binary.append((val & 128) == 0 ? 0 : 1);
                val <<= 1;
             }
             binary.append(' ');
          }
          System.out.println("'" + s + "' to binary: " + binary);

        System.out.println(Integer.parseInt("01100110", 2));
    } …
Run Code Online (Sandbox Code Playgroud)

java string binary byte

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

如何在 Java 中显示十六进制/字节值

int myInt = 144;
byte myByte = /* Byte conversion of myInt */;
Run Code Online (Sandbox Code Playgroud)

输出应为myByte : 90(十六进制值 144)。

所以我做了:

byte myByte = (byte)myInt;
Run Code Online (Sandbox Code Playgroud)

我得到了myByte : ffffff90. :(

我怎样才能摆脱那些ffffff

java int hex byte

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

将有符号字节数组转换为无符号字节

我有一个字节数组。

bytes[] = [43, 0, 0, -13, 114, -75, -2, 2, 20, 0, 0]
Run Code Online (Sandbox Code Playgroud)

我想在 Java 中将其转换为无符号字节。这就是我所做的:创建一个新数组并使用 & 0xFF 复制值:

    this.bytes = new byte[bytes.length];
    for (int i=0;i<bytes.length;i++)
        this.bytes[i] = (byte) (bytes[i] & 0xFF);
Run Code Online (Sandbox Code Playgroud)

but the values stay negative in the new array as well. what am I doing wrong?

java unsigned

3
推荐指数
2
解决办法
5990
查看次数

如何在java中读取由C++程序创建的文件?

我有一个由c ++程序创建的文件,它是加密格式的.我想在我的java程序中阅读它.在解密文件内容的情况下,解密算法正在对字节[在c/c ++中为unsigned char-BYTE]执行操作.我使用了我在c/c ++程序中使用的相同解密算法.该算法包含^,%,*和 - 字节操作.但java的字节数据类型是签名的,因为我在解密时面临问题.如何在未签名的情况下以1字节读取文件或处理读取数据?提前致谢.

java

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

C# 无符号字节加密到 Java 有符号字节解密

我在 C# 中有一个应用程序,它使用 RijndaelManaged加密我的部分文件(因为它们是大文件)。所以我将我的文件转换为字节数组并只加密其中的一部分。

然后我想使用Java解密文件。所以我只需要解密用 C# 加密的文件的一部分(意味着那些字节)。

问题来了。因为在 C# 中我们有无符号字节,而在 Java 中我们有有符号字节。所以我的加密和解密没有按照我想要的方式工作。

在 C# 中,我将加密字节和普通字节连接在一起,并使用File.WriteAllBytes. 所以我不能在这里使用sbyte或者我不知道该怎么做:

byte[] myEncryptedFile = new byte[myFile.Length];
for (long i = 0; i < encryptedBlockBytes.Length; i++)
{
   myEncryptedFile[i] = encryptedBlockBytes[i];
}
for (long i = encryptedBlockBytes.Length; i < myFile.Length; i++)
{
   myEncryptedFile[i] = myFileBytes[i];

}

File.WriteAllBytes(@"C:\enc_file.big", myEncryptedFile);
Run Code Online (Sandbox Code Playgroud)

(并且在 Java 中有一个完全相同的解密代码)

所以我的问题是:

  • C# 中有WriteAllsBytes吗?
  • 或者我可以在 Java 中使用无符号字节吗?
  • 或者我的问题的任何其他解决方案?

c# java unsigned signed cryptography

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

标签 统计

java ×9

byte ×4

unsigned ×3

kotlin ×2

signed ×2

android ×1

binary ×1

c ×1

c# ×1

char ×1

cryptography ×1

hex ×1

int ×1

integer ×1

string ×1

type-conversion ×1

types ×1