问题列表 - 第5942页

是否有将二进制数据打包成UTF-16字符串的标准技术?

(在.NET中)我将任意二进制数据存储在byte [](例如图像)中.现在,我需要将该数据存储在字符串中(遗留API的"注释"字段).是否有将二进制数据打包字符串的标准技术?通过"打包",我的意思是对于任何合理大的随机数据集,bytes.Length/2packed.Length大致相同; 因为两个字节或多或少是一个字符.

这两个"明显"的答案不符合所有标准:

string base64 = System.Convert.ToBase64String(bytes)
Run Code Online (Sandbox Code Playgroud)

没有非常有效地使用字符串,因为它只使用大约60,000个可用的64个字符(我的存储是System.String).一起去

string utf16 = System.Text.Encoding.Unicode.GetString(bytes)
Run Code Online (Sandbox Code Playgroud)

更好地利用字符串,但它不适用于包含无效Unicode字符的数据(例如错误匹配的代理项对). 这篇MSDN文章展示了这种精确(差)技术.

我们来看一个简单的例子:

byte[] bytes = new byte[] { 0x41, 0x00, 0x31, 0x00};
string utf16 = System.Text.Encoding.Unicode.GetString(bytes);
byte[] utf16_bytes = System.Text.Encoding.Unicode.GetBytes(utf16);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,bytesutf16_bytes是相同的,因为原始字节是UTF-16字符串.使用base64编码执行相同的过程会产生16个成员的base64_bytes数组.

现在,使用无效的UTF-16数据重复该过程:

byte[] bytes = new byte[] { 0x41, 0x00, 0x00, 0xD8};
Run Code Online (Sandbox Code Playgroud)

您会发现utf16_bytes与原始数据不匹配.

我编写的代码使用U + FFFD作为无效Unicode字符之前的转义; 它有效,但我想知道是否有一种比我自己制作的更标准的技术.更何况,我不喜欢 …

.net unicode binary encoding utf-16

10
推荐指数
2
解决办法
3077
查看次数

Java抽象类混淆:未被调用的重写方法

所以我有两个班级。一种是抽象的:

public abstract class AbstractClient {
    protected boolean running = true;

    protected void run() {
        Scanner scanner = new Scanner(System.in);
        displayOptions();
        while (running) {
            String input = null;
            while (scanner.hasNext()) {
                input = scanner.next();
            }
            processInputCommand(input);
        }
    }

    abstract void displayOptions();

    abstract void processInputCommand(String input);

}
Run Code Online (Sandbox Code Playgroud)

一种是具体的子类:

public class BasicClient extends AbstractClient {
    private IBasicServer basicServer;

    public static void main(String[] args) {
        new BasicClient();
    }

    public BasicClient() {
        try {
            System.setSecurityManager(new RMISecurityManager());
            Registry registry = LocateRegistry.getRegistry();
            basicServer =  (IBasicServer) registry.lookup(IBasicServer.LOOKUPNAME); …
Run Code Online (Sandbox Code Playgroud)

java abstract-class

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

无法更改终端中的默认编辑器

我的默认编辑器是我服务器上的pico.我使用Bash和Linux.

我试图将Vim更改为我的默认编辑器失败

echo vim > $EDITOR
Run Code Online (Sandbox Code Playgroud)

如何更改Vim我的默认编辑器?

[编辑]

以下代码在.bashrc中不起作用

export EDITOR='vim'
Run Code Online (Sandbox Code Playgroud)

vim bash editor pico

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

所有域实体对象的抽象基类

我在一些域对象模型中看到,为所有域Entity对象创建了一个抽象基类(实现了Equals和GetHashCode)以从中获取其身份.

我不清楚为什么需要这个基类以及何时以及为什么应该使用它.您能否就此提供一些见解或向我推荐一个有关此问题的链接

谢谢

现在我理解了覆盖Equality的优势(这个链接有助于http://en.csharp-online.net/CSharp_Canonical_Forms -Identity_Equality)

回到域驱动设计我想稍微扩展我的问题;

我有一个客户实体,我使用guid作为身份.

如果我创建具有完全相同细节的2个客户实例,因为我使用guid作为标识它们将是两个不同的对象.但是因为它们具有相同的所有属性,所以它们应该是同一个对象(或者它是一种更好的ddd实践,以保持它们的独特性和独立性?)

试图了解我是否应该通过完全属性值匹配来处理两个对象的相等性.如果我朝着那个方向前进,那么我正在寻找在子类级别上覆盖基类的等式并实现这些条件,或者让实体的标识为字符串或哈希码(?)表示所有值的值这些属性并使用基类的Equality.

我可能在这里很少,所以提前感谢耐心.

c# domain-driven-design

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

需要一个简单的"Hello World"示例,使用Python中的Webkit库

有没有人知道在Python中使用Webkit库的简单"Hello World"示例?我有一个GTK窗口,在里面我想放置Webkit.

使用Python/mozembed(Mozilla/Gecko),这很简单:

mozembed = gtkmozembed.MozEmbed()
mozembed.load_url('http://google.com/')
Run Code Online (Sandbox Code Playgroud)

..我已经创建了我的浏览器,如何使用WebKit执行此操作?

python webkit

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

8
推荐指数
2
解决办法
1789
查看次数

将std :: map移植到C?

我正在将一些c ++代码移植到c.什么是c中std :: map的可行等价物?我知道c中没有等价物.

这就是我想要使用的:

在c ++中:

std::map< uint, sTexture > m_Textures;
Run Code Online (Sandbox Code Playgroud)

在c:

typedef struct
{
  uint* intKey;
  sTexture* textureValue;
} sTMTextureMap;
Run Code Online (Sandbox Code Playgroud)

这是可行的还是我过分简化地图?万一你没有达到目的,它的纹理贴图.

c c++ porting

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

关于Visual WebGui的观点

我想听听您使用Gizmox Visual WebGui产品的经验.谢谢.

frameworks rad visual-web-gui

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

来自字符串源的Python xml ElementTree?

ElementTree.parse从文件中读取,如果我已经在字符串中包含XML数据,我该如何使用它?

也许我在这里遗漏了一些东西,但是必须有一种方法可以使用ElementTree而无需将字符串写入文件并再次读取它.

xml.etree.elementtree

python xml

102
推荐指数
4
解决办法
11万
查看次数

如何制作Linux C++ GUI应用程序

制作Linux C++ GUI应用程序的最简单方法是什么?我正在使用GNOME和ubuntu 8.10.

c++ ubuntu user-interface gnome

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